|
@@ -27,6 +27,7 @@ import org.apache.lucene.search.FilterScorer;
|
|
|
import org.apache.lucene.search.IndexSearcher;
|
|
|
import org.apache.lucene.search.Query;
|
|
|
import org.apache.lucene.search.Scorer;
|
|
|
+import org.apache.lucene.search.ScorerSupplier;
|
|
|
import org.apache.lucene.search.Weight;
|
|
|
import org.apache.lucene.util.Bits;
|
|
|
import org.elasticsearch.common.io.stream.StreamInput;
|
|
@@ -174,8 +175,8 @@ public class FiltersFunctionScoreQuery extends Query {
|
|
|
for (int i = 0; i < filterFunctions.length; i++) {
|
|
|
FilterFunction filterFunction = filterFunctions[i];
|
|
|
functions[i] = filterFunction.function.getLeafScoreFunction(context);
|
|
|
- Scorer filterScorer = filterWeights[i].scorer(context);
|
|
|
- docSets[i] = Lucene.asSequentialAccessBits(context.reader().maxDoc(), filterScorer);
|
|
|
+ ScorerSupplier filterScorerSupplier = filterWeights[i].scorerSupplier(context);
|
|
|
+ docSets[i] = Lucene.asSequentialAccessBits(context.reader().maxDoc(), filterScorerSupplier);
|
|
|
}
|
|
|
return new FiltersFunctionFactorScorer(this, subQueryScorer, scoreMode, filterFunctions, maxBoost, functions, docSets, combineFunction, needsScores);
|
|
|
}
|
|
@@ -200,7 +201,7 @@ public class FiltersFunctionScoreQuery extends Query {
|
|
|
List<Explanation> filterExplanations = new ArrayList<>();
|
|
|
for (int i = 0; i < filterFunctions.length; ++i) {
|
|
|
Bits docSet = Lucene.asSequentialAccessBits(context.reader().maxDoc(),
|
|
|
- filterWeights[i].scorer(context));
|
|
|
+ filterWeights[i].scorerSupplier(context));
|
|
|
if (docSet.get(doc)) {
|
|
|
FilterFunction filterFunction = filterFunctions[i];
|
|
|
Explanation functionExplanation = filterFunction.function.getLeafScoreFunction(context).explainScore(doc, expl);
|