Package org.apache.lucene.search
Class Weight
java.lang.Object
org.apache.lucene.search.Weight
- All Implemented Interfaces:
SegmentCacheable
- Direct Known Subclasses:
BM25FQuery.BM25FWeight,BooleanWeight,CompletionWeight,ConstantScoreWeight,CoveringQuery.CoveringWeight,DisjunctionMaxQuery.DisjunctionMaxWeight,FilterWeight,FunctionQuery.FunctionWeight,FunctionRangeQuery.FunctionRangeWeight,FunctionScoreQuery.FunctionScoreWeight,IntervalQuery.IntervalWeight,PhraseWeight,SpanWeight,SynonymQuery.SynonymWeight,TermAutomatonQuery.TermAutomatonWeight,TermQuery.TermWeight
Expert: Calculate query weights and build query scorers.
The purpose of Weight is to ensure searching does not modify a
Query, so that a Query instance can be reused.
IndexSearcher dependent state of the query should reside in the
Weight.
LeafReader dependent state should reside in the Scorer.
Since Weight creates Scorer instances for a given
LeafReaderContext (scorer(org.apache.lucene.index.LeafReaderContext))
callers must maintain the relationship between the searcher's top-level
IndexReaderContext and the context used to create a Scorer.
A Weight is used in the following way:
- A
Weightis constructed by a top-level query, given aIndexSearcher(Query.createWeight(IndexSearcher, ScoreMode, float)). - A
Scoreris constructed byscorer(org.apache.lucene.index.LeafReaderContext).
- Since:
- 2.9
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classJust wraps a Scorer and performs top scoring using it.protected static classWraps an internal docIdSetIterator for it to start with docID = -1 -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbulkScorer(LeafReaderContext context) Optional method, to return aBulkScorerto score the query and send hits to aCollector.abstract Explanationexplain(LeafReaderContext context, int doc) An explanation of the score computation for the named document.abstract voidextractTerms(Set<Term> terms) Deprecated.final QuerygetQuery()The query that this concerns.matches(LeafReaderContext context, int doc) ReturnsMatchesfor a specific document, ornullif the document does not match the parent query A query match that contains no position information (for example, a Point or DocValues query) will returnMatchesUtils.MATCH_WITH_NO_TERMSabstract Scorerscorer(LeafReaderContext context) Returns aScorerwhich can iterate in order over all matching documents and assign them a score.scorerSupplier(LeafReaderContext context) Optional method.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.lucene.search.SegmentCacheable
isCacheable
-
Field Details
-
parentQuery
-
-
Constructor Details
-
Weight
Sole constructor, typically invoked by sub-classes.- Parameters:
query- the parent query
-
-
Method Details
-
extractTerms
Deprecated.Expert: adds all terms occurring in this query to the terms set. If theWeightwas created withneedsScores == truethen this method will only extract terms which are used for scoring, otherwise it will extract all terms which are used for matching. -
matches
ReturnsMatchesfor a specific document, ornullif the document does not match the parent query A query match that contains no position information (for example, a Point or DocValues query) will returnMatchesUtils.MATCH_WITH_NO_TERMS- Parameters:
context- the reader's context to create theMatchesfordoc- the document's id relative to the given context's reader- Throws:
IOException
-
explain
An explanation of the score computation for the named document.- Parameters:
context- the readers context to create theExplanationfor.doc- the document's id relative to the given context's reader- Returns:
- an Explanation for the score
- Throws:
IOException- if anIOExceptionoccurs
-
getQuery
The query that this concerns. -
scorer
Returns 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.- 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
-
scorerSupplier
Optional method. Get aScorerSupplier, which allows to know the cost of theScorerbefore building it. The default implementation callsscorer(org.apache.lucene.index.LeafReaderContext)and builds aScorerSupplierwrapper around it.- Throws:
IOException- See Also:
-
bulkScorer
Optional 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.- 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
-
Query.visit(QueryVisitor)withQueryVisitor.termCollector(Set)