summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/common/lucene/search/function/FieldValueFactorFunction.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/elasticsearch/common/lucene/search/function/FieldValueFactorFunction.java')
-rw-r--r--core/src/main/java/org/elasticsearch/common/lucene/search/function/FieldValueFactorFunction.java20
1 files changed, 10 insertions, 10 deletions
diff --git a/core/src/main/java/org/elasticsearch/common/lucene/search/function/FieldValueFactorFunction.java b/core/src/main/java/org/elasticsearch/common/lucene/search/function/FieldValueFactorFunction.java
index 3bc5542c2a..e225df040a 100644
--- a/core/src/main/java/org/elasticsearch/common/lucene/search/function/FieldValueFactorFunction.java
+++ b/core/src/main/java/org/elasticsearch/common/lucene/search/function/FieldValueFactorFunction.java
@@ -62,7 +62,7 @@ public class FieldValueFactorFunction extends ScoreFunction {
public LeafScoreFunction getLeafScoreFunction(LeafReaderContext ctx) {
final SortedNumericDoubleValues values;
if(indexFieldData == null) {
- values = FieldData.emptySortedNumericDoubles(ctx.reader().maxDoc());
+ values = FieldData.emptySortedNumericDoubles();
} else {
values = this.indexFieldData.load(ctx).getDoubleValues();
}
@@ -70,16 +70,16 @@ public class FieldValueFactorFunction extends ScoreFunction {
return new LeafScoreFunction() {
@Override
- public double score(int docId, float subQueryScore) {
- values.setDocument(docId);
- final int numValues = values.count();
+ public double score(int docId, float subQueryScore) throws IOException {
double value;
- if (numValues > 0) {
- value = values.valueAt(0);
- } else if (missing != null) {
- value = missing;
+ if (values.advanceExact(docId)) {
+ value = values.nextValue();
} else {
- throw new ElasticsearchException("Missing value for field [" + field + "]");
+ if (missing != null) {
+ value = missing;
+ } else {
+ throw new ElasticsearchException("Missing value for field [" + field + "]");
+ }
}
double val = value * boostFactor;
double result = modifier.apply(val);
@@ -91,7 +91,7 @@ public class FieldValueFactorFunction extends ScoreFunction {
}
@Override
- public Explanation explainScore(int docId, Explanation subQueryScore) {
+ public Explanation explainScore(int docId, Explanation subQueryScore) throws IOException {
String modifierStr = modifier != null ? modifier.toString() : "";
String defaultStr = missing != null ? "?:" + missing : "";
double score = score(docId, subQueryScore.getValue());