Skip to content

Commit 3bfd004

Browse files
committed
Adapt QueryAnalyzer to use TermInSetQuery#getBytesRefIterator
1 parent 0085911 commit 3bfd004

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

modules/percolator/src/main/java/org/elasticsearch/percolator/QueryAnalyzer.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,15 @@
2525
import org.apache.lucene.search.TermInSetQuery;
2626
import org.apache.lucene.search.TermQuery;
2727
import org.apache.lucene.util.BytesRef;
28+
import org.apache.lucene.util.BytesRefIterator;
2829
import org.apache.lucene.util.NumericUtils;
2930
import org.apache.lucene.util.automaton.ByteRunAutomaton;
3031
import org.elasticsearch.common.lucene.search.function.FunctionScoreQuery;
3132
import org.elasticsearch.index.query.DateRangeIncludingNowQuery;
32-
import org.elasticsearch.index.search.NestedHelper;
3333
import org.elasticsearch.lucene.queries.BlendedTermQuery;
3434

35+
import java.io.IOException;
36+
import java.io.UncheckedIOException;
3537
import java.util.ArrayList;
3638
import java.util.Arrays;
3739
import java.util.Collections;
@@ -198,10 +200,16 @@ public void consumeTerms(Query query, Term... termsToConsume) {
198200
@Override
199201
public void consumeTermsMatching(Query query, String field, Supplier<ByteRunAutomaton> automaton) {
200202
if (query instanceof TermInSetQuery q) {
201-
// TODO Lucene 10 upgrade: this is a workaround that only gets one term
202-
Term term = NestedHelper.getTermInSetTerm(q);
203+
BytesRefIterator bytesRefIterator = q.getBytesRefIterator();
204+
BytesRef term;
203205
Set<QueryExtraction> qe = new HashSet<>();
204-
qe.add(new QueryExtraction(term));
206+
try {
207+
while ((term = bytesRefIterator.next()) != null) {
208+
qe.add(new QueryExtraction(new Term(field, term)));
209+
}
210+
} catch (IOException e) {
211+
throw new UncheckedIOException(e);
212+
}
205213
this.terms.add(new Result(true, qe, 1));
206214
} else {
207215
super.consumeTermsMatching(query, field, automaton);

0 commit comments

Comments
 (0)