public abstract class Weight extends Object implements SegmentCacheable
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:
Weight
is constructed by a top-level query, given a
IndexSearcher
(Query.createWeight(IndexSearcher, ScoreMode, float)
).
Scorer
is constructed by
scorer(org.apache.lucene.index.LeafReaderContext)
.
Modifier and Type | Class and Description |
---|---|
protected static class |
Weight.DefaultBulkScorer
Just wraps a Scorer and performs top scoring using it.
|
protected static class |
Weight.StartDISIWrapper
Wraps an internal docIdSetIterator for it to start with docID = -1
|
Modifier and Type | Field and Description |
---|---|
protected Query |
parentQuery |
Modifier | Constructor and Description |
---|---|
protected |
Weight(Query query)
Sole constructor, typically invoked by sub-classes.
|
Modifier and Type | Method and Description |
---|---|
BulkScorer |
bulkScorer(LeafReaderContext context)
Optional method, to return a
BulkScorer to
score the query and send hits to a Collector . |
abstract Explanation |
explain(LeafReaderContext context,
int doc)
An explanation of the score computation for the named document.
|
abstract void |
extractTerms(Set<Term> terms)
Deprecated.
|
Query |
getQuery()
The query that this concerns.
|
Matches |
matches(LeafReaderContext context,
int doc)
Returns
Matches for a specific document, or null 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 return MatchesUtils.MATCH_WITH_NO_TERMS |
abstract Scorer |
scorer(LeafReaderContext context)
Returns a
Scorer which can iterate in order over all matching
documents and assign them a score. |
ScorerSupplier |
scorerSupplier(LeafReaderContext context)
Optional method.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
isCacheable
protected final Query parentQuery
protected Weight(Query query)
query
- the parent query@Deprecated public abstract void extractTerms(Set<Term> terms)
Query.visit(QueryVisitor)
with QueryVisitor.termCollector(Set)
Weight
was created with needsScores == true
then this
method will only extract terms which are used for scoring, otherwise it
will extract all terms which are used for matching.public Matches matches(LeafReaderContext context, int doc) throws IOException
Matches
for a specific document, or null
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 return MatchesUtils.MATCH_WITH_NO_TERMS
context
- the reader's context to create the Matches
fordoc
- the document's id relative to the given context's readerIOException
public abstract Explanation explain(LeafReaderContext context, int doc) throws IOException
context
- the readers context to create the Explanation
for.doc
- the document's id relative to the given context's readerIOException
- if an IOException
occurspublic final Query getQuery()
public abstract Scorer scorer(LeafReaderContext context) throws IOException
Scorer
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 have
LeafReader.getLiveDocs()
applied, they need to be checked on top.
context
- the LeafReaderContext
for which to return the Scorer
.Scorer
which scores documents in/out-of order.IOException
- if there is a low-level I/O errorpublic ScorerSupplier scorerSupplier(LeafReaderContext context) throws IOException
ScorerSupplier
, which allows to know the cost of the Scorer
before building it. The default implementation calls scorer(org.apache.lucene.index.LeafReaderContext)
and
builds a ScorerSupplier
wrapper around it.IOException
scorer(org.apache.lucene.index.LeafReaderContext)
public BulkScorer bulkScorer(LeafReaderContext context) throws IOException
BulkScorer
to
score the query and send hits to a Collector
.
Only queries that have a different top-level approach
need to override this; the default implementation
pulls a normal Scorer
and iterates and
collects the resulting hits which are not marked as deleted.context
- the LeafReaderContext
for which to return the Scorer
.BulkScorer
which scores documents and
passes them to a collector.IOException
- if there is a low-level I/O errorCopyright © 2000-2021 Apache Software Foundation. All Rights Reserved.