This is an automated email from the ASF dual-hosted git repository.
ishan pushed a commit to branch ishan/upgrade-to-lucene-10
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/ishan/upgrade-to-lucene-10 by
this push:
new f4b8b16d4f2 Moved setRewriteMethod() to constructor, replaced scorer()
with scorerSupplier()
f4b8b16d4f2 is described below
commit f4b8b16d4f20dff980715aeaf531113dde13c8c2
Author: Ishan Chattopadhyaya <[email protected]>
AuthorDate: Thu Jan 16 02:04:21 2025 +0530
Moved setRewriteMethod() to constructor, replaced scorer() with
scorerSupplier()
---
.../apache/solr/parser/SolrQueryParserBase.java | 11 +++-----
.../java/org/apache/solr/query/SolrRangeQuery.java | 28 +++++---------------
.../solr/schema/AbstractSpatialFieldType.java | 3 +--
.../org/apache/solr/schema/DenseVectorField.java | 4 +--
.../src/java/org/apache/solr/schema/FieldType.java | 3 +--
.../solr/search/GraphTermsQParserPlugin.java | 22 ++++------------
.../src/java/org/apache/solr/search/JoinQuery.java | 18 ++++---------
.../org/apache/solr/search/MatchCostQuery.java | 30 +++++-----------------
.../apache/solr/search/SolrDocumentFetcher.java | 5 ----
.../org/apache/solr/search/TopLevelJoinQuery.java | 20 ++++-----------
.../search/function/ValueSourceRangeFilter.java | 18 ++++---------
.../solr/search/join/CrossCollectionJoinQuery.java | 15 +++--------
.../org/apache/solr/search/join/GraphQuery.java | 20 +++------------
13 files changed, 49 insertions(+), 148 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
b/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
index 563002d4698..e4e323c9604 100644
--- a/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
+++ b/solr/core/src/java/org/apache/solr/parser/SolrQueryParserBase.java
@@ -56,6 +56,7 @@ import org.apache.lucene.util.QueryBuilder;
import org.apache.lucene.util.automaton.Automata;
import org.apache.lucene.util.automaton.Automaton;
import org.apache.lucene.util.automaton.Operations;
+import org.apache.lucene.util.automaton.RegExp;
import org.apache.solr.analysis.ReversedWildcardFilterFactory;
import org.apache.solr.analysis.TokenizerChain;
import org.apache.solr.common.SolrException;
@@ -598,10 +599,8 @@ public abstract class SolrQueryParserBase extends
QueryBuilder {
* @return new RegexpQuery instance
*/
protected Query newRegexpQuery(Term regexp) {
- RegexpQuery query = new RegexpQuery(regexp);
SchemaField sf = schema.getField(regexp.field());
- query.setRewriteMethod(sf.getType().getRewriteMethod(parser, sf));
- return query;
+ return new RegexpQuery(regexp, RegExp.ALL, 0,
RegexpQuery.DEFAULT_PROVIDER, Operations.DEFAULT_DETERMINIZE_WORK_LIMIT,
sf.getType().getRewriteMethod(parser, sf));
}
@Override
@@ -681,10 +680,8 @@ public abstract class SolrQueryParserBase extends
QueryBuilder {
* @return new WildcardQuery instance
*/
protected Query newWildcardQuery(Term t) {
- WildcardQuery query = new WildcardQuery(t);
SchemaField sf = schema.getField(t.field());
- query.setRewriteMethod(sf.getType().getRewriteMethod(parser, sf));
- return query;
+ return new WildcardQuery(t, Operations.DEFAULT_DETERMINIZE_WORK_LIMIT,
sf.getType().getRewriteMethod(parser, sf));
}
/**
@@ -1293,7 +1290,7 @@ public abstract class SolrQueryParserBase extends
QueryBuilder {
if (factory != null) {
Term term = new Term(field, termStr);
// fsa representing the query
- Automaton automaton = WildcardQuery.toAutomaton(term);
+ Automaton automaton = WildcardQuery.toAutomaton(term,
Operations.DEFAULT_DETERMINIZE_WORK_LIMIT);
// TODO: we should likely use the automaton to calculate shouldReverse,
too.
if (factory.shouldReverse(termStr)) {
automaton = Operations.concatenate(automaton,
Automata.makeChar(factory.getMarkerChar()));
diff --git a/solr/core/src/java/org/apache/solr/query/SolrRangeQuery.java
b/solr/core/src/java/org/apache/solr/query/SolrRangeQuery.java
index c9c6af65ce2..0ca17780ee0 100644
--- a/solr/core/src/java/org/apache/solr/query/SolrRangeQuery.java
+++ b/solr/core/src/java/org/apache/solr/query/SolrRangeQuery.java
@@ -30,23 +30,7 @@ import org.apache.lucene.index.TermState;
import org.apache.lucene.index.TermStates;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.BulkScorer;
-import org.apache.lucene.search.ConstantScoreQuery;
-import org.apache.lucene.search.ConstantScoreScorer;
-import org.apache.lucene.search.ConstantScoreWeight;
-import org.apache.lucene.search.DocIdSet;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Matches;
-import org.apache.lucene.search.MatchesUtils;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.QueryVisitor;
-import org.apache.lucene.search.ScoreMode;
-import org.apache.lucene.search.Scorer;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.Weight;
+import org.apache.lucene.search.*;
import org.apache.lucene.util.AttributeSource;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.DocIdSetBuilder;
@@ -521,7 +505,7 @@ public final class SolrRangeQuery extends ExtendedQueryBase
implements DocSetPro
return segStates[context.ord] = new SegState(segSet);
}
- private Scorer scorer(DocIdSet set) throws IOException {
+ private ScorerSupplier scorerSupplier(DocIdSet set) throws IOException {
if (set == null) {
return null;
}
@@ -529,7 +513,7 @@ public final class SolrRangeQuery extends ExtendedQueryBase
implements DocSetPro
if (disi == null) {
return null;
}
- return new ConstantScoreScorer(this, score(), scoreMode, disi);
+ return new DefaultScorerSupplier(new ConstantScoreScorer(score(),
scoreMode, disi));
}
@Override
@@ -547,12 +531,12 @@ public final class SolrRangeQuery extends
ExtendedQueryBase implements DocSetPro
}
@Override
- public Scorer scorer(LeafReaderContext context) throws IOException {
+ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws
IOException {
final SegState weightOrBitSet = getSegState(context);
if (weightOrBitSet.weight != null) {
- return weightOrBitSet.weight.scorer(context);
+ return new
DefaultScorerSupplier(weightOrBitSet.weight.scorer(context));
} else {
- return scorer(weightOrBitSet.set);
+ return scorerSupplier(weightOrBitSet.set);
}
}
diff --git
a/solr/core/src/java/org/apache/solr/schema/AbstractSpatialFieldType.java
b/solr/core/src/java/org/apache/solr/schema/AbstractSpatialFieldType.java
index d92acef8233..06258f6306b 100644
--- a/solr/core/src/java/org/apache/solr/schema/AbstractSpatialFieldType.java
+++ b/solr/core/src/java/org/apache/solr/schema/AbstractSpatialFieldType.java
@@ -362,8 +362,7 @@ public abstract class AbstractSpatialFieldType<T extends
SpatialStrategy> extend
@Override
protected Query getSpecializedExistenceQuery(QParser parser, SchemaField
field) {
- PrefixQuery query = new PrefixQuery(new Term(field.getName(), ""));
- query.setRewriteMethod(field.getType().getRewriteMethod(parser, field));
+ PrefixQuery query = new PrefixQuery(new Term(field.getName(), ""),
field.getType().getRewriteMethod(parser, field));
return query;
}
diff --git a/solr/core/src/java/org/apache/solr/schema/DenseVectorField.java
b/solr/core/src/java/org/apache/solr/schema/DenseVectorField.java
index 4d528361dd4..6dfbbc8ef9f 100644
--- a/solr/core/src/java/org/apache/solr/schema/DenseVectorField.java
+++ b/solr/core/src/java/org/apache/solr/schema/DenseVectorField.java
@@ -52,8 +52,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Provides a field type to support Lucene's {@link
org.apache.lucene.document.KnnVectorField}. See
- * {@link org.apache.lucene.search.KnnVectorQuery} for more details. It
supports a fixed cardinality
+ * Provides a field type to support Lucene's {@link
org.apache.lucene.document.KnnFloatVectorField}. See
+ * {@link org.apache.lucene.search.KnnFloatVectorQuery} for more details. It
supports a fixed cardinality
* dimension for the vector and a fixed similarity function. The default
similarity is
* EUCLIDEAN_HNSW (L2). The default algorithm is HNSW. For Lucene 9.1 e.g. See
{@link
* org.apache.lucene.util.hnsw.HnswGraph} for more details about the
implementation. <br>
diff --git a/solr/core/src/java/org/apache/solr/schema/FieldType.java
b/solr/core/src/java/org/apache/solr/schema/FieldType.java
index cd13fbf9f3a..58eb4cc0698 100644
--- a/solr/core/src/java/org/apache/solr/schema/FieldType.java
+++ b/solr/core/src/java/org/apache/solr/schema/FieldType.java
@@ -482,8 +482,7 @@ public abstract class FieldType extends FieldProperties {
if (termStr != null && termStr.isEmpty()) {
return getExistenceQuery(parser, sf);
}
- PrefixQuery query = new PrefixQuery(new Term(sf.getName(), termStr));
- query.setRewriteMethod(sf.getType().getRewriteMethod(parser, sf));
+ PrefixQuery query = new PrefixQuery(new Term(sf.getName(), termStr),
sf.getType().getRewriteMethod(parser, sf));
QueryUtils.ensurePrefixQueryObeysMinimumPrefixLength(parser, query,
termStr);
return query;
}
diff --git
a/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java
b/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java
index 3baae4e4027..48d4750f98e 100644
--- a/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/GraphTermsQParserPlugin.java
@@ -39,19 +39,7 @@ import org.apache.lucene.index.TermState;
import org.apache.lucene.index.TermStates;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.search.ConstantScoreQuery;
-import org.apache.lucene.search.ConstantScoreScorer;
-import org.apache.lucene.search.ConstantScoreWeight;
-import org.apache.lucene.search.DocIdSet;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.MatchAllDocsQuery;
-import org.apache.lucene.search.MatchNoDocsQuery;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.QueryVisitor;
-import org.apache.lucene.search.ScoreMode;
-import org.apache.lucene.search.Scorer;
-import org.apache.lucene.search.Weight;
+import org.apache.lucene.search.*;
import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.ArrayUtil;
import org.apache.lucene.util.BytesRef;
@@ -253,7 +241,7 @@ public class GraphTermsQParserPlugin extends QParserPlugin {
return new ConstantScoreWeight(this, boost) {
@Override
- public Scorer scorer(LeafReaderContext context) throws IOException {
+ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws
IOException {
final LeafReader reader = context.reader();
Terms terms = reader.terms(field);
if (terms == null) {
@@ -274,7 +262,7 @@ public class GraphTermsQParserPlugin extends QParserPlugin {
}
DocIdSet docIdSet = builder.build();
DocIdSetIterator disi = docIdSet.iterator();
- return disi == null ? null : new ConstantScoreScorer(this, score(),
scoreMode, disi);
+ return disi == null ? null : new DefaultScorerSupplier(new
ConstantScoreScorer(score(), scoreMode, disi));
}
@Override
@@ -593,7 +581,7 @@ abstract class PointSetQuery extends Query implements
DocSetProducer, Accountabl
DocSet docs;
@Override
- public Scorer scorer(LeafReaderContext context) throws IOException {
+ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws
IOException {
if (docs == null) {
docs = getDocSet(searcher);
}
@@ -603,7 +591,7 @@ abstract class PointSetQuery extends Query implements
DocSetProducer, Accountabl
if (readerSetIterator == null) {
return null;
}
- return new ConstantScoreScorer(this, score(), scoreMode,
readerSetIterator);
+ return new DefaultScorerSupplier(new ConstantScoreScorer(score(),
scoreMode, readerSetIterator));
}
@Override
diff --git a/solr/core/src/java/org/apache/solr/search/JoinQuery.java
b/solr/core/src/java/org/apache/solr/search/JoinQuery.java
index 5cf99140f7d..6fb5f21d760 100644
--- a/solr/core/src/java/org/apache/solr/search/JoinQuery.java
+++ b/solr/core/src/java/org/apache/solr/search/JoinQuery.java
@@ -29,15 +29,7 @@ import org.apache.lucene.index.MultiPostingsEnum;
import org.apache.lucene.index.PostingsEnum;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.search.ConstantScoreScorer;
-import org.apache.lucene.search.ConstantScoreWeight;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.QueryVisitor;
-import org.apache.lucene.search.ScoreMode;
-import org.apache.lucene.search.Scorer;
-import org.apache.lucene.search.Weight;
+import org.apache.lucene.search.*;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.FixedBitSet;
@@ -80,9 +72,9 @@ class JoinQuery extends Query {
}
@Override
- public Query rewrite(IndexReader reader) throws IOException {
+ public Query rewrite(IndexSearcher searcher) throws IOException {
// don't rewrite the subQuery
- return super.rewrite(reader);
+ return super.rewrite(searcher);
}
@Override
@@ -154,7 +146,7 @@ class JoinQuery extends Query {
DocSet resultSet;
@Override
- public Scorer scorer(LeafReaderContext context) throws IOException {
+ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws
IOException {
if (resultSet == null) {
boolean debug = rb != null && rb.isDebug();
RTimer timer = (debug ? new RTimer() : null);
@@ -188,7 +180,7 @@ class JoinQuery extends Query {
if (readerSetIterator == null) {
return null;
}
- return new ConstantScoreScorer(this, score(), scoreMode,
readerSetIterator);
+ return new DefaultScorerSupplier(new ConstantScoreScorer(score(),
scoreMode, readerSetIterator));
}
@Override
diff --git a/solr/core/src/java/org/apache/solr/search/MatchCostQuery.java
b/solr/core/src/java/org/apache/solr/search/MatchCostQuery.java
index d1a4656a88c..165ec18167b 100644
--- a/solr/core/src/java/org/apache/solr/search/MatchCostQuery.java
+++ b/solr/core/src/java/org/apache/solr/search/MatchCostQuery.java
@@ -21,17 +21,7 @@ import java.io.IOException;
import java.util.Objects;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.search.BulkScorer;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.Explanation;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Matches;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.QueryVisitor;
-import org.apache.lucene.search.ScoreMode;
-import org.apache.lucene.search.Scorer;
-import org.apache.lucene.search.TwoPhaseIterator;
-import org.apache.lucene.search.Weight;
+import org.apache.lucene.search.*;
/** Wraps a {@link Query} to customize the {@link
TwoPhaseIterator#matchCost()}. */
public class MatchCostQuery extends Query {
@@ -66,8 +56,8 @@ public class MatchCostQuery extends Query {
}
@Override
- public Query rewrite(IndexReader reader) throws IOException {
- final Query rewrite = delegate.rewrite(reader);
+ public Query rewrite(IndexSearcher searcher) throws IOException {
+ final Query rewrite = delegate.rewrite(searcher);
if (delegate.equals(rewrite)) {
return this; // unchanged
}
@@ -99,16 +89,16 @@ public class MatchCostQuery extends Query {
// scorer() so that we can wrap TPI
@Override
- public Scorer scorer(LeafReaderContext context) throws IOException {
+ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws
IOException {
final Scorer scorer = weight.scorer(context);
if (scorer == null) {
return null;
}
final TwoPhaseIterator tpi = scorer.twoPhaseIterator();
if (tpi == null || tpi.matchCost() == matchCost) {
- return scorer; // needn't wrap/delegate
+ return new DefaultScorerSupplier(scorer); // needn't wrap/delegate
}
- return new Scorer(weight) { // pass delegated weight
+ return new DefaultScorerSupplier(new Scorer() { // pass delegated
weight
@Override
public TwoPhaseIterator twoPhaseIterator() {
@@ -144,13 +134,7 @@ public class MatchCostQuery extends Query {
public int docID() {
return scorer.docID();
}
- };
- }
-
- // delegate because thus there's no need to care about TPI matchCost if
called
- @Override
- public BulkScorer bulkScorer(LeafReaderContext context) throws
IOException {
- return weight.bulkScorer(context);
+ });
}
};
}
diff --git a/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
b/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
index 56d12109982..591197d8381 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
@@ -275,9 +275,6 @@ public class SolrDocumentFetcher {
}
}
- /**
- * @see SolrIndexSearcher#doc(int)
- */
public Document doc(int docId) throws IOException {
return doc(docId, (Set<String>) null);
}
@@ -287,8 +284,6 @@ public class SolrDocumentFetcher {
*
* <p><b>NOTE</b>: the document will have all fields accessible, but if a
field filter is
* provided, only the provided fields will be loaded (the remainder will be
available lazily).
- *
- * @see SolrIndexSearcher#doc(int, Set)
*/
public Document doc(int i, Set<String> fields) throws IOException {
Document d;
diff --git a/solr/core/src/java/org/apache/solr/search/TopLevelJoinQuery.java
b/solr/core/src/java/org/apache/solr/search/TopLevelJoinQuery.java
index ce05a02eb95..86b9952349c 100644
--- a/solr/core/src/java/org/apache/solr/search/TopLevelJoinQuery.java
+++ b/solr/core/src/java/org/apache/solr/search/TopLevelJoinQuery.java
@@ -23,16 +23,7 @@ import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.LeafReader;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.SortedSetDocValues;
-import org.apache.lucene.search.Collector;
-import org.apache.lucene.search.ConstantScoreScorer;
-import org.apache.lucene.search.ConstantScoreWeight;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.ScoreMode;
-import org.apache.lucene.search.Scorer;
-import org.apache.lucene.search.TwoPhaseIterator;
-import org.apache.lucene.search.Weight;
+import org.apache.lucene.search.*;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LongBitSet;
import org.apache.solr.common.SolrException;
@@ -87,7 +78,7 @@ public class TopLevelJoinQuery extends JoinQuery {
final boolean toMultivalued =
toSearcher.getSchema().getFieldOrNull(toField).multiValued();
return new ConstantScoreWeight(this, boost) {
@Override
- public Scorer scorer(LeafReaderContext context) throws IOException {
+ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws
IOException {
if (toBitsetBounds.lower == BitsetBounds.NO_MATCHES) {
return null;
}
@@ -101,8 +92,7 @@ public class TopLevelJoinQuery extends JoinQuery {
}
final int docBase = context.docBase;
- return new ConstantScoreScorer(
- this,
+ return new DefaultScorerSupplier(new ConstantScoreScorer(
this.score(),
scoreMode,
new TwoPhaseIterator(toApproximation) {
@@ -126,7 +116,7 @@ public class TopLevelJoinQuery extends JoinQuery {
public float matchCost() {
return 10.0F;
}
- });
+ }));
}
@Override
@@ -142,7 +132,7 @@ public class TopLevelJoinQuery extends JoinQuery {
private Weight createNoMatchesWeight(float boost) {
return new ConstantScoreWeight(this, boost) {
@Override
- public Scorer scorer(LeafReaderContext context) throws IOException {
+ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws
IOException {
return null;
}
diff --git
a/solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java
b/solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java
index 0deb5744e8d..ac00a5c0740 100644
---
a/solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java
+++
b/solr/core/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java
@@ -23,15 +23,7 @@ import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.queries.function.ValueSourceScorer;
-import org.apache.lucene.search.ConstantScoreScorer;
-import org.apache.lucene.search.ConstantScoreWeight;
-import org.apache.lucene.search.Explanation;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.QueryVisitor;
-import org.apache.lucene.search.ScoreMode;
-import org.apache.lucene.search.Scorer;
-import org.apache.lucene.search.Weight;
+import org.apache.lucene.search.*;
/** RangeFilter over a ValueSource. */
public class ValueSourceRangeFilter extends Query {
@@ -99,7 +91,7 @@ public class ValueSourceRangeFilter extends Query {
FunctionValues functionValues = valueSource.getValues(vsContext,
context);
ValueSourceScorer scorer =
functionValues.getRangeScorer(
- this, context, lowerVal, upperVal, includeLower, includeUpper);
+ context, lowerVal, upperVal, includeLower, includeUpper);
if (scorer.matches(doc)) {
scorer.iterator().advance(doc);
return Explanation.match(
@@ -111,12 +103,12 @@ public class ValueSourceRangeFilter extends Query {
}
@Override
- public Scorer scorer(LeafReaderContext context) throws IOException {
+ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws
IOException {
ValueSourceScorer scorer =
valueSource
.getValues(vsContext, context)
- .getRangeScorer(this, context, lowerVal, upperVal, includeLower,
includeUpper);
- return new ConstantScoreScorer(this, score(), scoreMode,
scorer.iterator());
+ .getRangeScorer(context, lowerVal, upperVal, includeLower,
includeUpper);
+ return new DefaultScorerSupplier(new ConstantScoreScorer(score(),
scoreMode, scorer.iterator()));
}
@Override
diff --git
a/solr/core/src/java/org/apache/solr/search/join/CrossCollectionJoinQuery.java
b/solr/core/src/java/org/apache/solr/search/join/CrossCollectionJoinQuery.java
index b0b396cf6cf..c32b58bbc41 100644
---
a/solr/core/src/java/org/apache/solr/search/join/CrossCollectionJoinQuery.java
+++
b/solr/core/src/java/org/apache/solr/search/join/CrossCollectionJoinQuery.java
@@ -26,15 +26,7 @@ import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.PostingsEnum;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.search.ConstantScoreScorer;
-import org.apache.lucene.search.ConstantScoreWeight;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.QueryVisitor;
-import org.apache.lucene.search.ScoreMode;
-import org.apache.lucene.search.Scorer;
-import org.apache.lucene.search.Weight;
+import org.apache.lucene.search.*;
import org.apache.lucene.util.BytesRefBuilder;
import org.apache.lucene.util.FixedBitSet;
import org.apache.solr.client.solrj.io.SolrClientCache;
@@ -323,7 +315,7 @@ public class CrossCollectionJoinQuery extends Query {
}
@Override
- public Scorer scorer(LeafReaderContext context) throws IOException {
+ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws
IOException {
if (docs == null) {
docs = getDocSet();
}
@@ -332,7 +324,8 @@ public class CrossCollectionJoinQuery extends Query {
if (readerSetIterator == null) {
return null;
}
- return new ConstantScoreScorer(this, score(), scoreMode,
readerSetIterator);
+ Scorer scorer = new ConstantScoreScorer(score(), scoreMode,
readerSetIterator);
+ return new DefaultScorerSupplier(scorer);
}
@Override
diff --git a/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
b/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
index 77eb886e41b..c0f21584941 100644
--- a/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
+++ b/solr/core/src/java/org/apache/solr/search/join/GraphQuery.java
@@ -23,20 +23,8 @@ import java.util.Objects;
import java.util.TreeSet;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.*;
import org.apache.lucene.search.BooleanClause.Occur;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.DocIdSet;
-import org.apache.lucene.search.DocIdSetIterator;
-import org.apache.lucene.search.Explanation;
-import org.apache.lucene.search.FieldExistsQuery;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.QueryVisitor;
-import org.apache.lucene.search.ScoreMode;
-import org.apache.lucene.search.Scorer;
-import org.apache.lucene.search.Weight;
-import org.apache.lucene.search.WildcardQuery;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefHash;
import org.apache.lucene.util.FixedBitSet;
@@ -277,14 +265,14 @@ public class GraphQuery extends Query {
}
@Override
- public Scorer scorer(LeafReaderContext context) throws IOException {
+ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws
IOException {
if (resultSet == null) {
resultSet = getDocSet();
}
DocIdSetIterator disi = resultSet.iterator(context);
// create a scrorer on the result set, if results from right query are
empty, use empty
// iterator.
- return new GraphScorer(this, disi == null ? DocIdSetIterator.empty() :
disi, 1);
+ return new DefaultScorerSupplier(new GraphScorer(this, disi == null ?
DocIdSetIterator.empty() : disi, 1));
}
@Override
@@ -300,7 +288,7 @@ public class GraphQuery extends Query {
// graph query scorer constructor with iterator
public GraphScorer(Weight w, DocIdSetIterator iter, float score) throws
IOException {
- super(w);
+ super();
this.iter = iter == null ? DocIdSet.EMPTY.iterator() : iter;
this.score = score;
}