You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by yo...@apache.org on 2007/09/22 17:33:42 UTC

svn commit: r578456 - in /lucene/solr/trunk/src: java/org/apache/solr/search/function/ScaleFloatFunction.java test/org/apache/solr/search/function/TestFunctionQuery.java

Author: yonik
Date: Sat Sep 22 08:33:42 2007
New Revision: 578456

URL: http://svn.apache.org/viewvc?rev=578456&view=rev
Log:
don't factor in +-Inf,NaN in scale function

Modified:
    lucene/solr/trunk/src/java/org/apache/solr/search/function/ScaleFloatFunction.java
    lucene/solr/trunk/src/test/org/apache/solr/search/function/TestFunctionQuery.java

Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/ScaleFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/ScaleFloatFunction.java?rev=578456&r1=578455&r2=578456&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/ScaleFloatFunction.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/ScaleFloatFunction.java Sat Sep 22 08:33:42 2007
@@ -66,6 +66,11 @@
 
     for (int i=0; i<maxDoc; i++) {
       float val = vals.floatVal(i);
+      if ((Float.floatToRawIntBits(val) & (0xff<<23)) == 0xff<<23) {
+        // if the exponent in the float is all ones, then this is +Inf, -Inf or NaN
+        // which don't make sense to factor into the scale function
+        continue;
+      }
       if (val < minVal) {
         minVal = val;
       } else if (val > maxVal) {

Modified: lucene/solr/trunk/src/test/org/apache/solr/search/function/TestFunctionQuery.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/search/function/TestFunctionQuery.java?rev=578456&r1=578455&r2=578456&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/search/function/TestFunctionQuery.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/search/function/TestFunctionQuery.java Sat Sep 22 08:33:42 2007
@@ -128,6 +128,9 @@
     singleTest(field,"scale(\0,-1,1)",-4,-1, 100,1, 0,-0.9230769f);
     singleTest(field,"scale(\0,-10,1000)",-4,-10, 100,1000, 0,28.846153f);
 
+    // test that infinity doesn't mess up scale function
+    singleTest(field,"scale(log(\0),-1000,1000)",100,1000);
+
   }
 
   public void testFunctions() {