Package org.apache.lucene.search
Class Weight
- java.lang.Object
-
- org.apache.lucene.search.Weight
-
- All Implemented Interfaces:
SegmentCacheable
- Direct Known Subclasses:
ConstantScoreWeight,DisjunctionMaxQuery.DisjunctionMaxWeight,FilterWeight,SpanWeight
public abstract class Weight extends Object implements SegmentCacheable
Expert: Calculate query weights and build query scorers.The purpose of
Weightis to ensure searching does not modify aQuery, so that aQueryinstance can be reused.
IndexSearcherdependent state of the query should reside in theWeight.
LeafReaderdependent state should reside in theScorer.Since
WeightcreatesScorerinstances for a givenLeafReaderContext(scorer(org.apache.lucene.index.LeafReaderContext)) callers must maintain the relationship between the searcher's top-levelIndexReaderContextand the context used to create aScorer.A
Weightis 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 Classes Modifier and Type Class Description protected static classWeight.DefaultBulkScorerJust wraps a Scorer and performs top scoring using it.
-
Field Summary
Fields Modifier and Type Field Description protected QueryparentQuery
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description BulkScorerbulkScorer(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.QuerygetQuery()The query that this concerns.Matchesmatches(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.ScorerSupplierscorerSupplier(LeafReaderContext context)Optional method.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.lucene.search.SegmentCacheable
isCacheable
-
-
-
-
Field Detail
-
parentQuery
protected final Query parentQuery
-
-
Constructor Detail
-
Weight
protected Weight(Query query)
Sole constructor, typically invoked by sub-classes.- Parameters:
query- the parent query
-
-
Method Detail
-
extractTerms
@Deprecated public abstract void extractTerms(Set<Term> terms)
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
public Matches matches(LeafReaderContext context, int doc) throws IOException
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- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
explain
public abstract Explanation explain(LeafReaderContext context, int doc) throws IOException
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
public final Query getQuery()
The query that this concerns.
-
scorer
public abstract Scorer scorer(LeafReaderContext context) throws IOException
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
public ScorerSupplier scorerSupplier(LeafReaderContext context) throws IOException
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:
scorer(org.apache.lucene.index.LeafReaderContext)
-
bulkScorer
public BulkScorer bulkScorer(LeafReaderContext context) throws IOException
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
-
-