Skip to content

Commit a369049

Browse files
committed
Merge FunctionScoreQuery and FiltersFunctionScoreQuery (#25889)
This change merges the functionality of the FiltersFunctionScoreQuery in the FunctionScoreQuery. It also ensures that an exception is thrown when the computed score is equals to Float.NaN or Float.NEGATIVE_INFINITY. These scores are invalid for TopDocsCollectors that relies on score comparison. Fixes #15709 Fixes #23628
1 parent 85a8c7f commit a369049

File tree

20 files changed

+535
-695
lines changed

20 files changed

+535
-695
lines changed

core/src/main/java/org/apache/lucene/search/uhighlight/CustomUnifiedHighlighter.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
package org.apache.lucene.search.uhighlight;
2121

2222
import org.apache.lucene.analysis.Analyzer;
23-
import org.apache.lucene.index.FieldInfo;
24-
import org.apache.lucene.index.IndexOptions;
2523
import org.apache.lucene.index.Term;
2624
import org.apache.lucene.queries.CommonTermsQuery;
2725
import org.apache.lucene.search.DocIdSetIterator;
@@ -39,7 +37,6 @@
3937
import org.elasticsearch.common.Nullable;
4038
import org.elasticsearch.common.lucene.all.AllTermQuery;
4139
import org.elasticsearch.common.lucene.search.MultiPhrasePrefixQuery;
42-
import org.elasticsearch.common.lucene.search.function.FiltersFunctionScoreQuery;
4340
import org.elasticsearch.common.lucene.search.function.FunctionScoreQuery;
4441

4542
import java.io.IOException;
@@ -213,8 +210,6 @@ private Collection<Query> rewriteCustomQuery(Query query) {
213210
return Collections.singletonList(new TermQuery(atq.getTerm()));
214211
} else if (query instanceof FunctionScoreQuery) {
215212
return Collections.singletonList(((FunctionScoreQuery) query).getSubQuery());
216-
} else if (query instanceof FiltersFunctionScoreQuery) {
217-
return Collections.singletonList(((FiltersFunctionScoreQuery) query).getSubQuery());
218213
} else {
219214
return null;
220215
}

core/src/main/java/org/apache/lucene/search/vectorhighlight/CustomFieldQuery.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import org.apache.lucene.search.TermQuery;
3333
import org.apache.lucene.search.spans.SpanTermQuery;
3434
import org.elasticsearch.common.lucene.search.MultiPhrasePrefixQuery;
35-
import org.elasticsearch.common.lucene.search.function.FiltersFunctionScoreQuery;
3635
import org.elasticsearch.common.lucene.search.function.FunctionScoreQuery;
3736
import org.elasticsearch.index.search.ESToParentBlockJoinQuery;
3837

@@ -69,8 +68,6 @@ void flatten(Query sourceQuery, IndexReader reader, Collection<Query> flatQuerie
6968
flatten(((FunctionScoreQuery) sourceQuery).getSubQuery(), reader, flatQueries, boost);
7069
} else if (sourceQuery instanceof MultiPhrasePrefixQuery) {
7170
flatten(sourceQuery.rewrite(reader), reader, flatQueries, boost);
72-
} else if (sourceQuery instanceof FiltersFunctionScoreQuery) {
73-
flatten(((FiltersFunctionScoreQuery) sourceQuery).getSubQuery(), reader, flatQueries, boost);
7471
} else if (sourceQuery instanceof MultiPhraseQuery) {
7572
MultiPhraseQuery q = ((MultiPhraseQuery) sourceQuery);
7673
convertMultiPhraseQuery(0, new int[q.getTermArrays().length], q, q.getTermArrays(), q.getPositions(), reader, flatQueries);

core/src/main/java/org/elasticsearch/common/lucene/search/function/FieldValueFactorFunction.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,6 @@ public double score(int docId, float subQueryScore) throws IOException {
8383
}
8484
double val = value * boostFactor;
8585
double result = modifier.apply(val);
86-
if (Double.isNaN(result) || Double.isInfinite(result)) {
87-
throw new ElasticsearchException("Result of field modification [" + modifier.toString() + "(" + val
88-
+ ")] must be a number");
89-
}
9086
return result;
9187
}
9288

0 commit comments

Comments
 (0)