Author: yonik
Date: Mon Jun 8 14:47:23 2009
New Revision: 782657
URL: http://svn.apache.org/viewvc?rev=782657&view=rev
Log:
optimize NaN and -Inf check
Modified:
lucene/solr/trunk/src/java/org/apache/solr/search/function/BoostedQuery.java
lucene/solr/trunk/src/java/org/apache/solr/search/function/FunctionQuery.java
Modified:
lucene/solr/trunk/src/java/org/apache/solr/search/function/BoostedQuery.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/BoostedQuery.java?rev=782657&r1=782656&r2=782657&view=diff
==============================================================================
---
lucene/solr/trunk/src/java/org/apache/solr/search/function/BoostedQuery.java
(original)
+++
lucene/solr/trunk/src/java/org/apache/solr/search/function/BoostedQuery.java
Mon Jun 8 14:47:23 2009
@@ -122,9 +122,10 @@
public float score() throws IOException {
float score = qWeight * scorer.score() * vals.floatVal(scorer.doc());
- // current Lucene sorting priority queues can't handle NaN (score!=score
is true for NaN) and -Infinity
- if (score != score || score==Float.NEGATIVE_INFINITY) return
-Float.MAX_VALUE;
- return score;
+ // Current Lucene priority queues can't handle NaN and -Infinity, so
+ // map to -Float.MAX_VALUE. This conditional handles both -infinity
+ // and NaN since comparisons with NaN are always false.
+ return score>Float.NEGATIVE_INFINITY ? score : -Float.MAX_VALUE;
}
public boolean skipTo(int target) throws IOException {
Modified:
lucene/solr/trunk/src/java/org/apache/solr/search/function/FunctionQuery.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/FunctionQuery.java?rev=782657&r1=782656&r2=782657&view=diff
==============================================================================
---
lucene/solr/trunk/src/java/org/apache/solr/search/function/FunctionQuery.java
(original)
+++
lucene/solr/trunk/src/java/org/apache/solr/search/function/FunctionQuery.java
Mon Jun 8 14:47:23 2009
@@ -133,9 +133,10 @@
public float score() throws IOException {
float score = qWeight * vals.floatVal(doc);
- // current Lucene sorting priority queues can't handle NaN (score!=score
is true for NaN) and -Infinity
- if (score != score || score==Float.NEGATIVE_INFINITY) return
-Float.MAX_VALUE;
- return score;
+ // Current Lucene priority queues can't handle NaN and -Infinity, so
+ // map to -Float.MAX_VALUE. This conditional handles both -infinity
+ // and NaN since comparisons with NaN are always false.
+ return score>Float.NEGATIVE_INFINITY ? score : -Float.MAX_VALUE;
}
public boolean skipTo(int target) throws IOException {