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, boolean, 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.
|
| 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)
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)
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, waitisCacheableprotected final Query parentQuery
protected Weight(Query query)
query - the parent querypublic abstract void extractTerms(Set<Term> terms)
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_TERMScontext - the reader's context to create the Matches fordoc - the document's id relative to the given context's readerIOExceptionpublic 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.IOExceptionscorer(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-2018 Apache Software Foundation. All Rights Reserved.