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. |
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
IOException
public 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 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-2016 Apache Software Foundation. All Rights Reserved.