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
Weight
is to ensure searching does not modify aQuery
, so that aQuery
instance can be reused.
IndexSearcher
dependent state of the query should reside in theWeight
.
LeafReader
dependent state should reside in theScorer
.Since
Weight
createsScorer
instances for a givenLeafReaderContext
(scorer(org.apache.lucene.index.LeafReaderContext)
) callers must maintain the relationship between the searcher's top-levelIndexReaderContext
and the context used to create aScorer
.A
Weight
is used in the following way:- A
Weight
is constructed by a top-level query, given aIndexSearcher
(Query.createWeight(IndexSearcher, boolean, float)
). - A
Scorer
is constructed byscorer(org.apache.lucene.index.LeafReaderContext)
.
- Since:
- 2.9
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
Weight.DefaultBulkScorer
Just wraps a Scorer and performs top scoring using it.
-
Field Summary
Fields Modifier and Type Field Description protected Query
parentQuery
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description BulkScorer
bulkScorer(LeafReaderContext context)
Optional method, to return aBulkScorer
to score the query and send hits to aCollector
.abstract Explanation
explain(LeafReaderContext context, int doc)
An explanation of the score computation for the named document.abstract void
extractTerms(Set<Term> terms)
Expert: adds all terms occurring in this query to the terms set.Query
getQuery()
The query that this concerns.Matches
matches(LeafReaderContext context, int doc)
ReturnsMatches
for a specific document, ornull
if 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
abstract Scorer
scorer(LeafReaderContext context)
Returns aScorer
which can iterate in order over all matching documents and assign them a score.ScorerSupplier
scorerSupplier(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
public abstract void extractTerms(Set<Term> terms)
Expert: adds all terms occurring in this query to the terms set. If theWeight
was created withneedsScores == true
then 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
ReturnsMatches
for a specific document, ornull
if 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 theMatches
fordoc
- 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 theExplanation
for.doc
- the document's id relative to the given context's reader- Returns:
- an Explanation for the score
- Throws:
IOException
- if anIOException
occurs
-
getQuery
public final Query getQuery()
The query that this concerns.
-
scorer
public abstract Scorer scorer(LeafReaderContext context) throws IOException
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.- Parameters:
context
- theLeafReaderContext
for which to return theScorer
.- Returns:
- a
Scorer
which 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 theScorer
before building it. The default implementation callsscorer(org.apache.lucene.index.LeafReaderContext)
and builds aScorerSupplier
wrapper around it.- Throws:
IOException
- See Also:
scorer(org.apache.lucene.index.LeafReaderContext)
-
bulkScorer
public BulkScorer bulkScorer(LeafReaderContext context) throws IOException
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.- Parameters:
context
- theLeafReaderContext
for which to return theScorer
.- Returns:
- a
BulkScorer
which scores documents and passes them to a collector. - Throws:
IOException
- if there is a low-level I/O error
-
-