public abstract class Weight extends Object
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)).
getValueForNormalization() method is called on the
Weight to compute the query normalization factor
Similarity.queryNorm(float) of the query clauses contained in the
query.
normalize(float, float). At
this point the weighting is complete.
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.
|
abstract float |
getValueForNormalization()
The value for normalization of contained query clauses (e.g.
|
abstract void |
normalize(float norm,
float boost)
Assigns the query normalization factor and boost to this.
|
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.
|
protected 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 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 float getValueForNormalization()
throws IOException
IOExceptionpublic abstract void normalize(float norm,
float boost)
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-2017 Apache Software Foundation. All Rights Reserved.