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
Weightis to ensure searching does not modify aQuery, so that aQueryinstance can be reused.
Searcherdependent state of the query should reside in theWeight.
IndexReaderdependent state should reside in theScorer.A
Weightis used in the following way:- A
Weightis constructed by a top-level query, given aSearcher(Query.createWeight(Searcher)). - The
sumOfSquaredWeights()method is called on theWeightto 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
Scoreris 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 Explanationexplain(IndexReader reader, int doc)An explanation of the score computation for the named document.abstract QuerygetQuery()The query that this concerns.abstract floatgetValue()The weight for this query.abstract voidnormalize(float norm)Assigns the query normalization factor to this.abstract Scorerscorer(IndexReader reader, boolean scoreDocsInOrder, boolean topScorer)Returns aScorerwhich scores documents in/out-of order according toscoreDocsInOrder.booleanscoresDocsOutOfOrder()Returns true iff this implementation scores docs only out of order.abstract floatsumOfSquaredWeights()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 aScorerwhich scores documents in/out-of order according toscoreDocsInOrder.NOTE: even if
scoreDocsInOrderis false, it is recommended to check whether the returnedScorerindeed scores documents out of order (i.e., callscoresDocsOutOfOrder()), as someScorerimplementations will always return documents in-order.
NOTE: null can be returned if no documents will be scored by this query.- Parameters:
reader- theIndexReaderfor 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
Scorerwhich scores documents in/out-of order. - Throws:
IOException
-
sumOfSquaredWeights
public abstract float sumOfSquaredWeights() throws IOExceptionThe 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'sacceptsDocsOutOfOrderandscorer(org.apache.lucene.index.IndexReader, boolean, boolean)to create a matchingScorerinstance for a givenCollector, or vice versa.NOTE: the default implementation returns
false, i.e. theScorerscores documents in-order.
-
-