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
FieldsModifier and TypeFieldDescriptionprivate final MultiTermQueryprivate final ScoreModeprivate final IndexSearcherFields inherited from class org.apache.lucene.search.Weight
parentQuery -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedRewritingWeight(MultiTermQuery q, float boost, ScoreMode scoreMode, IndexSearcher searcher) -
Method Summary
Modifier and TypeMethodDescriptionbulkScorer(LeafReaderContext context) Optional method, to return aBulkScorerto score the query and send hits to aCollector.private booleancollectTerms(int fieldDocCount, TermsEnum termsEnum, List<AbstractMultiTermQueryConstantScoreWrapper.TermAndState> terms) private static longestimateCost(Terms terms, long queryTermsCount) booleanmatches(LeafReaderContext context, int doc) ReturnsMatchesfor a specific document, ornullif the document does not match the parent queryrewrite(LeafReaderContext context, Terms terms) protected abstract AbstractMultiTermQueryConstantScoreWrapper.WeightOrDocIdSetIteratorrewriteInner(LeafReaderContext context, int fieldDocCount, Terms terms, TermsEnum termsEnum, List<AbstractMultiTermQueryConstantScoreWrapper.TermAndState> collectedTerms) Rewrite the query as either aWeightor aDocIdSetIteratorwrapped in aAbstractMultiTermQueryConstantScoreWrapper.WeightOrDocIdSetIterator.scorer(LeafReaderContext context) Returns aScorerwhich can iterate in order over all matching documents and assign them a score.private ScorerscorerForIterator(DocIdSetIterator iterator) scorerSupplier(LeafReaderContext context) Optional method.Methods inherited from class org.apache.lucene.search.ConstantScoreWeight
explain, score
-
Field Details
-
q
-
scoreMode
-
searcher
-
-
Constructor Details
-
RewritingWeight
protected RewritingWeight(MultiTermQuery q, float boost, ScoreMode scoreMode, IndexSearcher searcher)
-
-
Method Details
-
rewriteInner
protected abstract AbstractMultiTermQueryConstantScoreWrapper.WeightOrDocIdSetIterator rewriteInner(LeafReaderContext context, int fieldDocCount, Terms terms, TermsEnum termsEnum, List<AbstractMultiTermQueryConstantScoreWrapper.TermAndState> collectedTerms) throws IOException Rewrite the query as either aWeightor aDocIdSetIteratorwrapped 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 aBooleanQueryand 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,termsEnumwill be positioned on the next "uncollected" term. The terms that were already collected will be incollectedTerms.- Throws:
IOException
-
rewrite
private AbstractMultiTermQueryConstantScoreWrapper.WeightOrDocIdSetIterator rewrite(LeafReaderContext context, Terms terms) throws IOException - Throws:
IOException
-
collectTerms
private boolean collectTerms(int fieldDocCount, TermsEnum termsEnum, List<AbstractMultiTermQueryConstantScoreWrapper.TermAndState> terms) throws IOException - Throws:
IOException
-
scorerForIterator
-
bulkScorer
Description copied from class:WeightOptional method, to return aBulkScorerto 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 normalScorerand iterates and collects the resulting hits which are not marked as deleted.- Overrides:
bulkScorerin classWeight- Parameters:
context- theLeafReaderContextfor which to return theScorer.- Returns:
- a
BulkScorerwhich scores documents and passes them to a collector. - Throws:
IOException- if there is a low-level I/O error
-
scorer
Description copied from class:WeightReturns aScorerwhich 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
Scorerdoes not haveLeafReader.getLiveDocs()applied, they need to be checked on top.- Specified by:
scorerin classWeight- Parameters:
context- theLeafReaderContextfor which to return theScorer.- Returns:
- a
Scorerwhich scores documents in/out-of order. - Throws:
IOException- if there is a low-level I/O error
-
matches
Description copied from class:WeightReturnsMatchesfor a specific document, ornullif 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- Overrides:
matchesin classWeight- Parameters:
context- the reader's context to create theMatchesfordoc- the document's id relative to the given context's reader- Throws:
IOException
-
scorerSupplier
Description copied from class:WeightOptional method. Get aScorerSupplier, which allows to know the cost of theScorerbefore building it. The default implementation callsWeight.scorer(org.apache.lucene.index.LeafReaderContext)and builds aScorerSupplierwrapper around it.- Overrides:
scorerSupplierin classWeight- Throws:
IOException- See Also:
-
estimateCost
- Throws:
IOException
-
isCacheable
- Returns:
trueif the object can be cached against a given leaf
-