Package org.apache.lucene.search
Class Weight
- java.lang.Object
-
- org.apache.lucene.search.Weight
-
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
BooleanQuery.BooleanWeight
,ConstantScoreQuery.ConstantWeight
,DisjunctionMaxQuery.DisjunctionMaxWeight
,SpanWeight
public abstract class Weight extends Object implements Serializable
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.
Searcher
dependent state of the query should reside in theWeight
.
IndexReader
dependent state should reside in theScorer
.A
Weight
is used in the following way:- A
Weight
is constructed by a top-level query, given aSearcher
(Query.createWeight(Searcher)
). - The
sumOfSquaredWeights()
method is called on theWeight
to compute the query normalization factorSimilarity.queryNorm(float)
of the query clauses contained in the query. - The query normalization factor is passed to
normalize(float)
. At this point the weighting is complete. - A
Scorer
is constructed byscorer(IndexReader,boolean,boolean)
.
- Since:
- 2.9
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description Weight()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract Explanation
explain(IndexReader reader, int doc)
An explanation of the score computation for the named document.abstract Query
getQuery()
The query that this concerns.abstract float
getValue()
The weight for this query.abstract void
normalize(float norm)
Assigns the query normalization factor to this.abstract Scorer
scorer(IndexReader reader, boolean scoreDocsInOrder, boolean topScorer)
Returns aScorer
which scores documents in/out-of order according toscoreDocsInOrder
.boolean
scoresDocsOutOfOrder()
Returns true iff this implementation scores docs only out of order.abstract float
sumOfSquaredWeights()
The sum of squared weights of contained query clauses.
-
-
-
Method Detail
-
explain
public abstract Explanation explain(IndexReader reader, int doc) throws IOException
An explanation of the score computation for the named document.- Parameters:
reader
- sub-reader containing the give docdoc
-- Returns:
- an Explanation for the score
- Throws:
IOException
-
getQuery
public abstract Query getQuery()
The query that this concerns.
-
getValue
public abstract float getValue()
The weight for this query.
-
normalize
public abstract void normalize(float norm)
Assigns the query normalization factor to this.
-
scorer
public abstract Scorer scorer(IndexReader reader, boolean scoreDocsInOrder, boolean topScorer) throws IOException
Returns aScorer
which scores documents in/out-of order according toscoreDocsInOrder
.NOTE: even if
scoreDocsInOrder
is false, it is recommended to check whether the returnedScorer
indeed scores documents out of order (i.e., callscoresDocsOutOfOrder()
), as someScorer
implementations will always return documents in-order.
NOTE: null can be returned if no documents will be scored by this query.- Parameters:
reader
- theIndexReader
for which to return theScorer
.scoreDocsInOrder
- specifies whether in-order scoring of documents is required. Note that if set to false (i.e., out-of-order scoring is required), this method can return whatever scoring mode it supports, as every in-order scorer is also an out-of-order one. However, an out-of-order scorer may not supportDocIdSetIterator.nextDoc()
and/orDocIdSetIterator.advance(int)
, therefore it is recommended to request an in-order scorer if use of these methods is required.topScorer
- if true,Scorer.score(Collector)
will be called; if false,DocIdSetIterator.nextDoc()
and/orDocIdSetIterator.advance(int)
will be called.- Returns:
- a
Scorer
which scores documents in/out-of order. - Throws:
IOException
-
sumOfSquaredWeights
public abstract float sumOfSquaredWeights() throws IOException
The sum of squared weights of contained query clauses.- Throws:
IOException
-
scoresDocsOutOfOrder
public boolean scoresDocsOutOfOrder()
Returns true iff this implementation scores docs only out of order. This method is used in conjunction withCollector
'sacceptsDocsOutOfOrder
andscorer(org.apache.lucene.index.IndexReader, boolean, boolean)
to create a matchingScorer
instance for a givenCollector
, or vice versa.NOTE: the default implementation returns
false
, i.e. theScorer
scores documents in-order.
-
-