Skip to content

Commit e7301fe

Browse files
Replace deprecated Query#rewrite(IndexReader with rewrite(IndexSearcher (#8967) (#8977)
* Replace deprecated Query#rewrite(IndexReader with rewrite(IndexSearcher Query#rewrite(IndexReader reader) is deprecated in Lucene 9.7 and removed in Lucene 10 in favor of Query#rewrite(IndexSearcher searcher). The latter provides LeafCollector hooks to optimize for concurrent queries. This commit cuts over usage of rewrite(IndexReader) to rewrite(IndexSearcher) for Lucene 10 compatibility and upstream query optimizations. * remove stray collector.finish --------- (cherry picked from commit b282005) Signed-off-by: Nicholas Walter Knize <[email protected]> Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent ea83f8e commit e7301fe

File tree

20 files changed

+56
-57
lines changed

20 files changed

+56
-57
lines changed

modules/parent-join/src/main/java/org/opensearch/join/query/HasChildQueryBuilder.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,11 +416,12 @@ public void visit(QueryVisitor visitor) {
416416
}
417417

418418
@Override
419-
public Query rewrite(IndexReader reader) throws IOException {
420-
Query rewritten = super.rewrite(reader);
419+
public Query rewrite(IndexSearcher searcher) throws IOException {
420+
Query rewritten = super.rewrite(searcher);
421421
if (rewritten != this) {
422422
return rewritten;
423423
}
424+
IndexReader reader = searcher.getIndexReader();
424425
if (reader instanceof DirectoryReader) {
425426
IndexSearcher indexSearcher = new IndexSearcher(reader);
426427
indexSearcher.setQueryCache(null);

modules/percolator/src/main/java/org/opensearch/percolator/PercolateQuery.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232

3333
package org.opensearch.percolator;
3434

35-
import org.apache.lucene.index.IndexReader;
3635
import org.apache.lucene.index.LeafReaderContext;
3736
import org.apache.lucene.search.DocIdSetIterator;
3837
import org.apache.lucene.search.Explanation;
@@ -89,8 +88,8 @@ final class PercolateQuery extends Query implements Accountable {
8988
}
9089

9190
@Override
92-
public Query rewrite(IndexReader reader) throws IOException {
93-
Query rewritten = candidateMatchesQuery.rewrite(reader);
91+
public Query rewrite(IndexSearcher searcher) throws IOException {
92+
Query rewritten = candidateMatchesQuery.rewrite(searcher);
9493
if (rewritten != candidateMatchesQuery) {
9594
return new PercolateQuery(
9695
name,

modules/percolator/src/test/java/org/opensearch/percolator/CandidateQueryTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1275,7 +1275,7 @@ private CustomQuery(Term term) {
12751275
}
12761276

12771277
@Override
1278-
public Query rewrite(IndexReader reader) throws IOException {
1278+
public Query rewrite(IndexSearcher searcher) throws IOException {
12791279
return new TermQuery(term);
12801280
}
12811281

server/src/main/java/org/apache/lucene/queries/BlendedTermQuery.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import org.apache.lucene.search.BooleanQuery;
4343
import org.apache.lucene.search.BoostQuery;
4444
import org.apache.lucene.search.DisjunctionMaxQuery;
45+
import org.apache.lucene.search.IndexSearcher;
4546
import org.apache.lucene.search.Query;
4647
import org.apache.lucene.search.QueryVisitor;
4748
import org.apache.lucene.search.TermQuery;
@@ -93,11 +94,12 @@ public BlendedTermQuery(Term[] terms, float[] boosts) {
9394
}
9495

9596
@Override
96-
public Query rewrite(IndexReader reader) throws IOException {
97-
Query rewritten = super.rewrite(reader);
97+
public Query rewrite(IndexSearcher searcher) throws IOException {
98+
Query rewritten = super.rewrite(searcher);
9899
if (rewritten != this) {
99100
return rewritten;
100101
}
102+
IndexReader reader = searcher.getIndexReader();
101103
IndexReaderContext context = reader.getContext();
102104
TermStates[] ctx = new TermStates[terms.length];
103105
int[] docFreqs = new int[ctx.length];

server/src/main/java/org/opensearch/common/lucene/search/MoreLikeThisQuery.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@
3636
import org.apache.lucene.analysis.TokenStream;
3737
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
3838
import org.apache.lucene.index.Fields;
39-
import org.apache.lucene.index.IndexReader;
4039
import org.apache.lucene.index.Term;
4140
import org.apache.lucene.index.Terms;
4241
import org.apache.lucene.index.TermsEnum;
4342
import org.apache.lucene.search.BooleanClause;
4443
import org.apache.lucene.search.BooleanQuery;
44+
import org.apache.lucene.search.IndexSearcher;
4545
import org.apache.lucene.search.Query;
4646
import org.apache.lucene.search.QueryVisitor;
4747
import org.apache.lucene.search.similarities.ClassicSimilarity;
@@ -144,12 +144,12 @@ public boolean equals(Object obj) {
144144
}
145145

146146
@Override
147-
public Query rewrite(IndexReader reader) throws IOException {
148-
Query rewritten = super.rewrite(reader);
147+
public Query rewrite(IndexSearcher searcher) throws IOException {
148+
Query rewritten = super.rewrite(searcher);
149149
if (rewritten != this) {
150150
return rewritten;
151151
}
152-
XMoreLikeThis mlt = new XMoreLikeThis(reader, similarity == null ? new ClassicSimilarity() : similarity);
152+
XMoreLikeThis mlt = new XMoreLikeThis(searcher.getIndexReader(), similarity == null ? new ClassicSimilarity() : similarity);
153153

154154
mlt.setFieldNames(moreLikeFields);
155155
mlt.setAnalyzer(analyzer);

server/src/main/java/org/opensearch/common/lucene/search/MultiPhrasePrefixQuery.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.apache.lucene.index.TermsEnum;
4040
import org.apache.lucene.search.BooleanClause;
4141
import org.apache.lucene.search.BooleanQuery;
42+
import org.apache.lucene.search.IndexSearcher;
4243
import org.apache.lucene.search.MatchNoDocsQuery;
4344
import org.apache.lucene.search.MultiPhraseQuery;
4445
import org.apache.lucene.search.Query;
@@ -159,8 +160,8 @@ public int[] getPositions() {
159160
}
160161

161162
@Override
162-
public Query rewrite(IndexReader reader) throws IOException {
163-
Query rewritten = super.rewrite(reader);
163+
public Query rewrite(IndexSearcher searcher) throws IOException {
164+
Query rewritten = super.rewrite(searcher);
164165
if (rewritten != this) {
165166
return rewritten;
166167
}
@@ -177,7 +178,7 @@ public Query rewrite(IndexReader reader) throws IOException {
177178
int position = positions.get(sizeMinus1);
178179
Set<Term> terms = new HashSet<>();
179180
for (Term term : suffixTerms) {
180-
getPrefixTerms(terms, term, reader);
181+
getPrefixTerms(terms, term, searcher.getIndexReader());
181182
if (terms.size() > maxExpansions) {
182183
break;
183184
}

server/src/main/java/org/opensearch/common/lucene/search/function/FunctionScoreQuery.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ protected int doHashCode() {
128128

129129
@Override
130130
protected ScoreFunction rewrite(IndexReader reader) throws IOException {
131-
Query newFilter = filter.rewrite(reader);
131+
Query newFilter = filter.rewrite(new IndexSearcher(reader));
132132
if (newFilter == filter) {
133133
return this;
134134
}
@@ -322,16 +322,16 @@ public void visit(QueryVisitor visitor) {
322322
}
323323

324324
@Override
325-
public Query rewrite(IndexReader reader) throws IOException {
326-
Query rewritten = super.rewrite(reader);
325+
public Query rewrite(IndexSearcher searcher) throws IOException {
326+
Query rewritten = super.rewrite(searcher);
327327
if (rewritten != this) {
328328
return rewritten;
329329
}
330-
Query newQ = subQuery.rewrite(reader);
330+
Query newQ = subQuery.rewrite(searcher);
331331
ScoreFunction[] newFunctions = new ScoreFunction[functions.length];
332332
boolean needsRewrite = (newQ != subQuery);
333333
for (int i = 0; i < functions.length; i++) {
334-
newFunctions[i] = functions[i].rewrite(reader);
334+
newFunctions[i] = functions[i].rewrite(searcher.getIndexReader());
335335
needsRewrite |= (newFunctions[i] != functions[i]);
336336
}
337337
if (needsRewrite) {

server/src/main/java/org/opensearch/common/lucene/search/function/ScriptScoreQuery.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232

3333
package org.opensearch.common.lucene.search.function;
3434

35-
import org.apache.lucene.index.IndexReader;
3635
import org.apache.lucene.index.LeafReaderContext;
3736
import org.apache.lucene.search.BooleanClause;
3837
import org.apache.lucene.search.DocIdSetIterator;
@@ -105,12 +104,12 @@ public ScriptScoreQuery(
105104
}
106105

107106
@Override
108-
public Query rewrite(IndexReader reader) throws IOException {
109-
Query newQ = subQuery.rewrite(reader);
107+
public Query rewrite(IndexSearcher searcher) throws IOException {
108+
Query newQ = subQuery.rewrite(searcher);
110109
if (newQ != subQuery) {
111110
return new ScriptScoreQuery(newQ, queryName, script, scriptBuilder, minScore, indexName, shardId, indexVersion);
112111
}
113-
return super.rewrite(reader);
112+
return super.rewrite(searcher);
114113
}
115114

116115
@Override

server/src/main/java/org/opensearch/index/document/SortedUnsignedLongDocValuesRangeQuery.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import org.apache.lucene.index.DocValues;
1212
import org.apache.lucene.index.FieldInfo;
13-
import org.apache.lucene.index.IndexReader;
1413
import org.apache.lucene.index.LeafReader;
1514
import org.apache.lucene.index.LeafReaderContext;
1615
import org.apache.lucene.index.NumericDocValues;
@@ -87,12 +86,12 @@ public String toString(String field) {
8786
}
8887

8988
@Override
90-
public Query rewrite(IndexReader reader) throws IOException {
89+
public Query rewrite(IndexSearcher searcher) throws IOException {
9190
if (Long.compareUnsigned(lowerValue, Numbers.MIN_UNSIGNED_LONG_VALUE_AS_LONG) == 0
9291
&& Long.compareUnsigned(upperValue, Numbers.MAX_UNSIGNED_LONG_VALUE_AS_LONG) == 0) {
9392
return new FieldExistsQuery(field);
9493
}
95-
return super.rewrite(reader);
94+
return super.rewrite(searcher);
9695
}
9796

9897
abstract SortedNumericDocValues getValues(LeafReader reader, String field) throws IOException;

server/src/main/java/org/opensearch/index/query/DateRangeIncludingNowQuery.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232

3333
package org.opensearch.index.query;
3434

35-
import org.apache.lucene.index.IndexReader;
3635
import org.apache.lucene.search.BooleanClause;
36+
import org.apache.lucene.search.IndexSearcher;
3737
import org.apache.lucene.search.Query;
3838
import org.apache.lucene.search.QueryVisitor;
3939

@@ -60,7 +60,7 @@ public Query getQuery() {
6060
}
6161

6262
@Override
63-
public Query rewrite(IndexReader reader) throws IOException {
63+
public Query rewrite(IndexSearcher searcher) throws IOException {
6464
return in;
6565
}
6666

0 commit comments

Comments
 (0)