You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2013/10/01 20:36:14 UTC
svn commit: r1528173 - in /lucene/dev/branches/branch_4x: ./ lucene/
lucene/expressions/
lucene/expressions/src/java/org/apache/lucene/expressions/
lucene/expressions/src/test/org/apache/lucene/expressions/ lucene/queries/
lucene/queries/src/java/org/a...
Author: rmuir
Date: Tue Oct 1 18:36:14 2013
New Revision: 1528173
URL: http://svn.apache.org/r1528173
Log:
LUCENE-5247: expressions should use DoubleDocValues not FunctionValues directly
Added:
lucene/dev/branches/branch_4x/lucene/expressions/src/test/org/apache/lucene/expressions/TestExpressionValueSource.java
- copied unchanged from r1528167, lucene/dev/trunk/lucene/expressions/src/test/org/apache/lucene/expressions/TestExpressionValueSource.java
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/expressions/ (props changed)
lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionComparator.java
lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionFunctionValues.java
lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionValueSource.java
lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ScoreFunctionValues.java
lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ScoreValueSource.java
lucene/dev/branches/branch_4x/lucene/queries/ (props changed)
lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/DoubleDocValues.java
lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/IntDocValues.java
lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/LongDocValues.java
lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/DoubleFieldSource.java
lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IntFieldSource.java
lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/LongFieldSource.java
Modified: lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionComparator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionComparator.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionComparator.java (original)
+++ lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionComparator.java Tue Oct 1 18:36:14 2013
@@ -49,7 +49,7 @@ class ExpressionComparator extends Field
try {
Map<String,Object> context = new HashMap<String,Object>();
assert scorer != null;
- context.put("scorer", new ScoreFunctionValues(scorer));
+ context.put("scorer", scorer);
scores = source.getValues(context, readerContext);
} catch (IOException e) {
throw new RuntimeException(e);
Modified: lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionFunctionValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionFunctionValues.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionFunctionValues.java (original)
+++ lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionFunctionValues.java Tue Oct 1 18:36:14 2013
@@ -17,16 +17,19 @@ package org.apache.lucene.expressions;
*/
import org.apache.lucene.queries.function.FunctionValues;
+import org.apache.lucene.queries.function.ValueSource;
+import org.apache.lucene.queries.function.docvalues.DoubleDocValues;
/** A {@link FunctionValues} which evaluates an expression */
-class ExpressionFunctionValues extends FunctionValues {
+class ExpressionFunctionValues extends DoubleDocValues {
final Expression expression;
final FunctionValues[] functionValues;
int currentDocument = -1;
double currentValue;
- public ExpressionFunctionValues(Expression expression, FunctionValues[] functionValues) {
+ ExpressionFunctionValues(ValueSource parent, Expression expression, FunctionValues[] functionValues) {
+ super(parent);
if (expression == null) {
throw new NullPointerException();
}
@@ -46,14 +49,4 @@ class ExpressionFunctionValues extends F
return currentValue;
}
-
- @Override
- public Object objectVal(int doc) {
- return doubleVal(doc);
- }
-
- @Override
- public String toString(int document) {
- return "ExpressionFunctionValues(" + document + ": " + objectVal(document) + ")";
- }
}
Modified: lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionValueSource.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionValueSource.java (original)
+++ lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionValueSource.java Tue Oct 1 18:36:14 2013
@@ -17,6 +17,7 @@ package org.apache.lucene.expressions;
*/
import java.io.IOException;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@@ -79,7 +80,7 @@ final class ExpressionValueSource extend
externalValues[i] = values;
}
- return new ExpressionFunctionValues(expression, externalValues);
+ return new ExpressionFunctionValues(this, expression, externalValues);
}
@Override
@@ -89,19 +90,48 @@ final class ExpressionValueSource extend
@Override
public String description() {
- return "ExpressionValueSource(" + expression.sourceText + ")";
+ return "expr(" + expression.sourceText + ")";
}
-
+
@Override
public int hashCode() {
- return System.identityHashCode(this);
+ final int prime = 31;
+ int result = 1;
+ result = prime * result
+ + ((expression == null) ? 0 : expression.hashCode());
+ result = prime * result + (needsScores ? 1231 : 1237);
+ result = prime * result + Arrays.hashCode(variables);
+ return result;
}
-
+
@Override
public boolean equals(Object obj) {
- return obj == this;
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ ExpressionValueSource other = (ExpressionValueSource) obj;
+ if (expression == null) {
+ if (other.expression != null) {
+ return false;
+ }
+ } else if (!expression.equals(other.expression)) {
+ return false;
+ }
+ if (needsScores != other.needsScores) {
+ return false;
+ }
+ if (!Arrays.equals(variables, other.variables)) {
+ return false;
+ }
+ return true;
}
-
+
boolean needsScores() {
return needsScores;
}
Modified: lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ScoreFunctionValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ScoreFunctionValues.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ScoreFunctionValues.java (original)
+++ lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ScoreFunctionValues.java Tue Oct 1 18:36:14 2013
@@ -19,15 +19,18 @@ package org.apache.lucene.expressions;
import java.io.IOException;
import org.apache.lucene.queries.function.FunctionValues;
+import org.apache.lucene.queries.function.ValueSource;
+import org.apache.lucene.queries.function.docvalues.DoubleDocValues;
import org.apache.lucene.search.Scorer;
/**
* A utility class to allow expressions to access the score as a {@link FunctionValues}.
*/
-class ScoreFunctionValues extends FunctionValues {
+class ScoreFunctionValues extends DoubleDocValues {
final Scorer scorer;
- ScoreFunctionValues(Scorer scorer) {
+ ScoreFunctionValues(ValueSource parent, Scorer scorer) {
+ super(parent);
this.scorer = scorer;
}
@@ -40,9 +43,4 @@ class ScoreFunctionValues extends Functi
throw new RuntimeException(exception);
}
}
-
- @Override
- public String toString(int document) {
- return "ScoreFunctionValues(" + document + ": " + doubleVal(document) + ")";
- }
}
Modified: lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ScoreValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ScoreValueSource.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ScoreValueSource.java (original)
+++ lucene/dev/branches/branch_4x/lucene/expressions/src/java/org/apache/lucene/expressions/ScoreValueSource.java Tue Oct 1 18:36:14 2013
@@ -20,27 +20,28 @@ package org.apache.lucene.expressions;
import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
+import org.apache.lucene.search.Scorer;
import java.io.IOException;
import java.util.Map;
/**
- * A {@link ValueSource} which uses the {@link ScoreFunctionValues} passed through
+ * A {@link ValueSource} which uses the {@link Scorer} passed through
* the context map by {@link ExpressionComparator}.
*/
@SuppressWarnings({"rawtypes"})
class ScoreValueSource extends ValueSource {
/**
- * <code>context</code> must contain a key "scorer" which is a {@link FunctionValues}.
+ * <code>context</code> must contain a key "scorer" which is a {@link Scorer}.
*/
@Override
public FunctionValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
- FunctionValues v = (FunctionValues) context.get("scorer");
+ Scorer v = (Scorer) context.get("scorer");
if (v == null) {
throw new IllegalStateException("Expressions referencing the score can only be used for sorting");
}
- return v;
+ return new ScoreFunctionValues(this, v);
}
@Override
@@ -55,6 +56,6 @@ class ScoreValueSource extends ValueSour
@Override
public String description() {
- return "ValueSource to expose scorer passed by ExpressionComparator";
+ return "score()";
}
}
Modified: lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/DoubleDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/DoubleDocValues.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/DoubleDocValues.java (original)
+++ lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/DoubleDocValues.java Tue Oct 1 18:36:14 2013
@@ -17,8 +17,10 @@ package org.apache.lucene.queries.functi
* limitations under the License.
*/
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
+import org.apache.lucene.queries.function.ValueSourceScorer;
import org.apache.lucene.util.mutable.MutableValue;
import org.apache.lucene.util.mutable.MutableValueDouble;
@@ -80,6 +82,64 @@ public abstract class DoubleDocValues ex
public String toString(int doc) {
return vs.description() + '=' + strVal(doc);
}
+
+ @Override
+ public ValueSourceScorer getRangeScorer(IndexReader reader, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper) {
+ double lower,upper;
+
+ if (lowerVal==null) {
+ lower = Double.NEGATIVE_INFINITY;
+ } else {
+ lower = Double.parseDouble(lowerVal);
+ }
+
+ if (upperVal==null) {
+ upper = Double.POSITIVE_INFINITY;
+ } else {
+ upper = Double.parseDouble(upperVal);
+ }
+
+ final double l = lower;
+ final double u = upper;
+
+
+ if (includeLower && includeUpper) {
+ return new ValueSourceScorer(reader, this) {
+ @Override
+ public boolean matchesValue(int doc) {
+ double docVal = doubleVal(doc);
+ return docVal >= l && docVal <= u;
+ }
+ };
+ }
+ else if (includeLower && !includeUpper) {
+ return new ValueSourceScorer(reader, this) {
+ @Override
+ public boolean matchesValue(int doc) {
+ double docVal = doubleVal(doc);
+ return docVal >= l && docVal < u;
+ }
+ };
+ }
+ else if (!includeLower && includeUpper) {
+ return new ValueSourceScorer(reader, this) {
+ @Override
+ public boolean matchesValue(int doc) {
+ double docVal = doubleVal(doc);
+ return docVal > l && docVal <= u;
+ }
+ };
+ }
+ else {
+ return new ValueSourceScorer(reader, this) {
+ @Override
+ public boolean matchesValue(int doc) {
+ double docVal = doubleVal(doc);
+ return docVal > l && docVal < u;
+ }
+ };
+ }
+ }
@Override
public ValueFiller getValueFiller() {
Modified: lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/IntDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/IntDocValues.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/IntDocValues.java (original)
+++ lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/IntDocValues.java Tue Oct 1 18:36:14 2013
@@ -17,8 +17,10 @@ package org.apache.lucene.queries.functi
* limitations under the License.
*/
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
+import org.apache.lucene.queries.function.ValueSourceScorer;
import org.apache.lucene.util.mutable.MutableValue;
import org.apache.lucene.util.mutable.MutableValueInt;
@@ -75,6 +77,40 @@ public abstract class IntDocValues exten
public String toString(int doc) {
return vs.description() + '=' + strVal(doc);
}
+
+ @Override
+ public ValueSourceScorer getRangeScorer(IndexReader reader, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper) {
+ int lower,upper;
+
+ // instead of using separate comparison functions, adjust the endpoints.
+
+ if (lowerVal==null) {
+ lower = Integer.MIN_VALUE;
+ } else {
+ lower = Integer.parseInt(lowerVal);
+ if (!includeLower && lower < Integer.MAX_VALUE) lower++;
+ }
+
+ if (upperVal==null) {
+ upper = Integer.MAX_VALUE;
+ } else {
+ upper = Integer.parseInt(upperVal);
+ if (!includeUpper && upper > Integer.MIN_VALUE) upper--;
+ }
+
+ final int ll = lower;
+ final int uu = upper;
+
+ return new ValueSourceScorer(reader, this) {
+ @Override
+ public boolean matchesValue(int doc) {
+ int val = intVal(doc);
+ // only check for deleted if it's the default value
+ // if (val==0 && reader.isDeleted(doc)) return false;
+ return val >= ll && val <= uu;
+ }
+ };
+ }
@Override
public ValueFiller getValueFiller() {
Modified: lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/LongDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/LongDocValues.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/LongDocValues.java (original)
+++ lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/docvalues/LongDocValues.java Tue Oct 1 18:36:14 2013
@@ -17,8 +17,10 @@ package org.apache.lucene.queries.functi
* limitations under the License.
*/
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
+import org.apache.lucene.queries.function.ValueSourceScorer;
import org.apache.lucene.util.mutable.MutableValue;
import org.apache.lucene.util.mutable.MutableValueLong;
@@ -80,6 +82,44 @@ public abstract class LongDocValues exte
public String toString(int doc) {
return vs.description() + '=' + strVal(doc);
}
+
+ protected long externalToLong(String extVal) {
+ return Long.parseLong(extVal);
+ }
+
+ @Override
+ public ValueSourceScorer getRangeScorer(IndexReader reader, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper) {
+ long lower,upper;
+
+ // instead of using separate comparison functions, adjust the endpoints.
+
+ if (lowerVal==null) {
+ lower = Long.MIN_VALUE;
+ } else {
+ lower = externalToLong(lowerVal);
+ if (!includeLower && lower < Long.MAX_VALUE) lower++;
+ }
+
+ if (upperVal==null) {
+ upper = Long.MAX_VALUE;
+ } else {
+ upper = externalToLong(upperVal);
+ if (!includeUpper && upper > Long.MIN_VALUE) upper--;
+ }
+
+ final long ll = lower;
+ final long uu = upper;
+
+ return new ValueSourceScorer(reader, this) {
+ @Override
+ public boolean matchesValue(int doc) {
+ long val = longVal(doc);
+ // only check for deleted if it's the default value
+ // if (val==0 && reader.isDeleted(doc)) return false;
+ return val >= ll && val <= uu;
+ }
+ };
+ }
@Override
public ValueFiller getValueFiller() {
Modified: lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/DoubleFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/DoubleFieldSource.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/DoubleFieldSource.java (original)
+++ lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/DoubleFieldSource.java Tue Oct 1 18:36:14 2013
@@ -68,64 +68,6 @@ public class DoubleFieldSource extends F
}
@Override
- public ValueSourceScorer getRangeScorer(IndexReader reader, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper) {
- double lower,upper;
-
- if (lowerVal==null) {
- lower = Double.NEGATIVE_INFINITY;
- } else {
- lower = Double.parseDouble(lowerVal);
- }
-
- if (upperVal==null) {
- upper = Double.POSITIVE_INFINITY;
- } else {
- upper = Double.parseDouble(upperVal);
- }
-
- final double l = lower;
- final double u = upper;
-
-
- if (includeLower && includeUpper) {
- return new ValueSourceScorer(reader, this) {
- @Override
- public boolean matchesValue(int doc) {
- double docVal = doubleVal(doc);
- return docVal >= l && docVal <= u;
- }
- };
- }
- else if (includeLower && !includeUpper) {
- return new ValueSourceScorer(reader, this) {
- @Override
- public boolean matchesValue(int doc) {
- double docVal = doubleVal(doc);
- return docVal >= l && docVal < u;
- }
- };
- }
- else if (!includeLower && includeUpper) {
- return new ValueSourceScorer(reader, this) {
- @Override
- public boolean matchesValue(int doc) {
- double docVal = doubleVal(doc);
- return docVal > l && docVal <= u;
- }
- };
- }
- else {
- return new ValueSourceScorer(reader, this) {
- @Override
- public boolean matchesValue(int doc) {
- double docVal = doubleVal(doc);
- return docVal > l && docVal < u;
- }
- };
- }
- }
-
- @Override
public ValueFiller getValueFiller() {
return new ValueFiller() {
private final MutableValueDouble mval = new MutableValueDouble();
Modified: lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IntFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IntFieldSource.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IntFieldSource.java (original)
+++ lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/IntFieldSource.java Tue Oct 1 18:36:14 2013
@@ -101,40 +101,6 @@ public class IntFieldSource extends Fiel
}
@Override
- public ValueSourceScorer getRangeScorer(IndexReader reader, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper) {
- int lower,upper;
-
- // instead of using separate comparison functions, adjust the endpoints.
-
- if (lowerVal==null) {
- lower = Integer.MIN_VALUE;
- } else {
- lower = Integer.parseInt(lowerVal);
- if (!includeLower && lower < Integer.MAX_VALUE) lower++;
- }
-
- if (upperVal==null) {
- upper = Integer.MAX_VALUE;
- } else {
- upper = Integer.parseInt(upperVal);
- if (!includeUpper && upper > Integer.MIN_VALUE) upper--;
- }
-
- final int ll = lower;
- final int uu = upper;
-
- return new ValueSourceScorer(reader, this) {
- @Override
- public boolean matchesValue(int doc) {
- int val = arr.get(doc);
- // only check for deleted if it's the default value
- // if (val==0 && reader.isDeleted(doc)) return false;
- return val >= ll && val <= uu;
- }
- };
- }
-
- @Override
public ValueFiller getValueFiller() {
return new ValueFiller() {
private final MutableValueInt mval = new MutableValueInt();
Modified: lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/LongFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/LongFieldSource.java?rev=1528173&r1=1528172&r2=1528173&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/LongFieldSource.java (original)
+++ lucene/dev/branches/branch_4x/lucene/queries/src/java/org/apache/lucene/queries/function/valuesource/LongFieldSource.java Tue Oct 1 18:36:14 2013
@@ -91,37 +91,8 @@ public class LongFieldSource extends Fie
}
@Override
- public ValueSourceScorer getRangeScorer(IndexReader reader, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper) {
- long lower,upper;
-
- // instead of using separate comparison functions, adjust the endpoints.
-
- if (lowerVal==null) {
- lower = Long.MIN_VALUE;
- } else {
- lower = externalToLong(lowerVal);
- if (!includeLower && lower < Long.MAX_VALUE) lower++;
- }
-
- if (upperVal==null) {
- upper = Long.MAX_VALUE;
- } else {
- upper = externalToLong(upperVal);
- if (!includeUpper && upper > Long.MIN_VALUE) upper--;
- }
-
- final long ll = lower;
- final long uu = upper;
-
- return new ValueSourceScorer(reader, this) {
- @Override
- public boolean matchesValue(int doc) {
- long val = arr.get(doc);
- // only check for deleted if it's the default value
- // if (val==0 && reader.isDeleted(doc)) return false;
- return val >= ll && val <= uu;
- }
- };
+ protected long externalToLong(String extVal) {
+ return LongFieldSource.this.externalToLong(extVal);
}
@Override