Class Weight
- All Implemented Interfaces:
SegmentCacheable
- Direct Known Subclasses:
ConstantScoreWeight,DisjunctionMaxQuery.DisjunctionMaxWeight,FilterWeight,IndriAndWeight,PhraseWeight
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. -
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.intcount(LeafReaderContext context) Counts the number of live documents that match a givenparentQueryin a leaf.abstract Explanationexplain(LeafReaderContext context, int doc) An explanation of the score computation for the named document.final QuerygetQuery()The query that this concerns.matches(LeafReaderContext context, int doc) ReturnsMatchesfor a specific document, ornullif the document does not match the parent queryabstract 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
-
matches
ReturnsMatchesfor 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- Parameters:
context- the reader's context to create theMatchesfordoc- the document's id relative to the given context's reader- Throws:
IOException- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
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
-
count
Counts the number of live documents that match a givenparentQueryin a leaf.The default implementation returns -1 for every query. This indicates that the count could not be computed in sub-linear time.
Specific query classes should override it to provide other accurate sub-linear implementations (that actually return the count). Look at
MatchAllDocsQuery.createWeight(IndexSearcher, ScoreMode, float)for an exampleWe use this property of the function to count hits in
IndexSearcher.count(Query).- Parameters:
context- theLeafReaderContextfor which to return the count.- Returns:
- integer count of the number of matches
- Throws:
IOException- if there is a low-level I/O error
-