summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/common/lucene/search/function/RandomScoreFunction.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/org/elasticsearch/common/lucene/search/function/RandomScoreFunction.java')
-rw-r--r--core/src/main/java/org/elasticsearch/common/lucene/search/function/RandomScoreFunction.java11
1 files changed, 7 insertions, 4 deletions
diff --git a/core/src/main/java/org/elasticsearch/common/lucene/search/function/RandomScoreFunction.java b/core/src/main/java/org/elasticsearch/common/lucene/search/function/RandomScoreFunction.java
index 3810c16bc0..43e71f4dff 100644
--- a/core/src/main/java/org/elasticsearch/common/lucene/search/function/RandomScoreFunction.java
+++ b/core/src/main/java/org/elasticsearch/common/lucene/search/function/RandomScoreFunction.java
@@ -25,6 +25,7 @@ import org.elasticsearch.index.fielddata.AtomicFieldData;
import org.elasticsearch.index.fielddata.IndexFieldData;
import org.elasticsearch.index.fielddata.SortedBinaryDocValues;
+import java.io.IOException;
import java.util.Objects;
/**
@@ -68,14 +69,16 @@ public class RandomScoreFunction extends ScoreFunction {
return new LeafScoreFunction() {
@Override
- public double score(int docId, float subQueryScore) {
- uidByteData.setDocument(docId);
- int hash = StringHelper.murmurhash3_x86_32(uidByteData.valueAt(0), saltedSeed);
+ public double score(int docId, float subQueryScore) throws IOException {
+ if (uidByteData.advanceExact(docId) == false) {
+ throw new AssertionError("Document without a _uid");
+ }
+ int hash = StringHelper.murmurhash3_x86_32(uidByteData.nextValue(), saltedSeed);
return (hash & 0x00FFFFFF) / (float)(1 << 24); // only use the lower 24 bits to construct a float from 0.0-1.0
}
@Override
- public Explanation explainScore(int docId, Explanation subQueryScore) {
+ public Explanation explainScore(int docId, Explanation subQueryScore) throws IOException {
return Explanation.match(
CombineFunction.toFloat(score(docId, subQueryScore.getValue())),
"random score function (seed: " + originalSeed + ")");