Module org.apache.lucene.core
Package org.apache.lucene.search
Class AbstractMultiTermQueryConstantScoreWrapper.RewritingWeight
- java.lang.Object
-
- org.apache.lucene.search.Weight
-
- org.apache.lucene.search.ConstantScoreWeight
-
- org.apache.lucene.search.AbstractMultiTermQueryConstantScoreWrapper.RewritingWeight
-
- All Implemented Interfaces:
SegmentCacheable
- Enclosing class:
- AbstractMultiTermQueryConstantScoreWrapper<Q extends MultiTermQuery>
protected abstract static class AbstractMultiTermQueryConstantScoreWrapper.RewritingWeight extends ConstantScoreWeight
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.search.Weight
Weight.DefaultBulkScorer
-
-
Field Summary
Fields Modifier and Type Field Description private MultiTermQuery
q
private ScoreMode
scoreMode
private IndexSearcher
searcher
-
Fields inherited from class org.apache.lucene.search.Weight
parentQuery
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
RewritingWeight(MultiTermQuery q, float boost, ScoreMode scoreMode, IndexSearcher searcher)
-
Method Summary
-
Methods inherited from class org.apache.lucene.search.ConstantScoreWeight
explain, score
-
-
-
-
Field Detail
-
q
private final MultiTermQuery q
-
scoreMode
private final ScoreMode scoreMode
-
searcher
private final IndexSearcher searcher
-
-
Constructor Detail
-
RewritingWeight
protected RewritingWeight(MultiTermQuery q, float boost, ScoreMode scoreMode, IndexSearcher searcher)
-
-
Method Detail
-
rewriteInner
protected abstract AbstractMultiTermQueryConstantScoreWrapper.WeightOrDocIdSetIterator rewriteInner(LeafReaderContext context, int fieldDocCount, Terms terms, TermsEnum termsEnum, java.util.List<AbstractMultiTermQueryConstantScoreWrapper.TermAndState> collectedTerms) throws java.io.IOException
Rewrite the query as either aWeight
or aDocIdSetIterator
wrapped in aAbstractMultiTermQueryConstantScoreWrapper.WeightOrDocIdSetIterator
. Before this is called, the weight will attempt to "collect" found terms up to a threshold. If fewer terms than the threshold are found, the query will simply be rewritten into aBooleanQuery
and this method will not be called. This will only be called if it is determined there are more found terms. At the point this method is invoked,termsEnum
will be positioned on the next "uncollected" term. The terms that were already collected will be incollectedTerms
.- Throws:
java.io.IOException
-
rewrite
private AbstractMultiTermQueryConstantScoreWrapper.WeightOrDocIdSetIterator rewrite(LeafReaderContext context, Terms terms) throws java.io.IOException
- Throws:
java.io.IOException
-
collectTerms
private boolean collectTerms(int fieldDocCount, TermsEnum termsEnum, java.util.List<AbstractMultiTermQueryConstantScoreWrapper.TermAndState> terms) throws java.io.IOException
- Throws:
java.io.IOException
-
scorerForIterator
private Scorer scorerForIterator(DocIdSetIterator iterator)
-
bulkScorer
public BulkScorer bulkScorer(LeafReaderContext context) throws java.io.IOException
Description copied from class:Weight
Optional method, to return aBulkScorer
to score the query and send hits to aCollector
. Only queries that have a different top-level approach need to override this; the default implementation pulls a normalScorer
and iterates and collects the resulting hits which are not marked as deleted.- Overrides:
bulkScorer
in classWeight
- Parameters:
context
- theLeafReaderContext
for which to return theScorer
.- Returns:
- a
BulkScorer
which scores documents and passes them to a collector. - Throws:
java.io.IOException
- if there is a low-level I/O error
-
scorer
public Scorer scorer(LeafReaderContext context) throws java.io.IOException
Description copied from class:Weight
Returns aScorer
which can iterate in order over all matching documents and assign them a score.NOTE: null can be returned if no documents will be scored by this query.
NOTE: The returned
Scorer
does not haveLeafReader.getLiveDocs()
applied, they need to be checked on top.- Specified by:
scorer
in classWeight
- Parameters:
context
- theLeafReaderContext
for which to return theScorer
.- Returns:
- a
Scorer
which scores documents in/out-of order. - Throws:
java.io.IOException
- if there is a low-level I/O error
-
matches
public Matches matches(LeafReaderContext context, int doc) throws java.io.IOException
Description copied from class:Weight
ReturnsMatches
for a specific document, ornull
if the document does not match the parent queryA query match that contains no position information (for example, a Point or DocValues query) will return
MatchesUtils.MATCH_WITH_NO_TERMS
-
scorerSupplier
public ScorerSupplier scorerSupplier(LeafReaderContext context) throws java.io.IOException
Description copied from class:Weight
Optional method. Get aScorerSupplier
, which allows to know the cost of theScorer
before building it. The default implementation callsWeight.scorer(org.apache.lucene.index.LeafReaderContext)
and builds aScorerSupplier
wrapper around it.- Overrides:
scorerSupplier
in classWeight
- Throws:
java.io.IOException
- See Also:
Weight.scorer(org.apache.lucene.index.LeafReaderContext)
-
estimateCost
private static long estimateCost(Terms terms, long queryTermsCount) throws java.io.IOException
- Throws:
java.io.IOException
-
isCacheable
public boolean isCacheable(LeafReaderContext ctx)
- Returns:
true
if the object can be cached against a given leaf
-
-