Class ValueSourceScorer
java.lang.Object
org.apache.lucene.search.Scorable
org.apache.lucene.search.Scorer
org.apache.lucene.queries.function.ValueSourceScorer
Scorer which returns the result of FunctionValues.floatVal(int) as
the score for a document, and which filters out documents that don't match matches(int).
This Scorer has a TwoPhaseIterator. This is similar to FunctionQuery,
with an added filter.
Note: If the scores are needed, then the underlying value will probably be fetched/computed twice -- once to filter and next to return the score. If that's non-trivial then consider wrapping it in an implementation that will cache the current value.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.lucene.search.Scorable
Scorable.ChildScorable -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final DocIdSetIteratorprivate final TwoPhaseIteratorprotected final FunctionValues -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedValueSourceScorer(Weight weight, LeafReaderContext readerContext, FunctionValues values) -
Method Summary
Modifier and TypeMethodDescriptionintdocID()Returns the doc ID that is currently being scored.floatgetMaxScore(int upTo) Return the maximum score that documents between the lasttargetthat this iterator wasshallow-advancedto included andupToincluded.iterator()Return aDocIdSetIteratorover matching documents.abstract booleanmatches(int doc) Override to decide if this document matches.floatscore()Returns the score of the current document matching the query.Optional method: Return aTwoPhaseIteratorview of thisScorer.Methods inherited from class org.apache.lucene.search.Scorer
advanceShallow, getWeightMethods inherited from class org.apache.lucene.search.Scorable
getChildren, setMinCompetitiveScore
-
Field Details
-
values
-
twoPhaseIterator
-
disi
-
-
Constructor Details
-
ValueSourceScorer
-
-
Method Details
-
matches
Override to decide if this document matches. It's called byTwoPhaseIterator.matches().- Throws:
IOException
-
iterator
Description copied from class:ScorerReturn aDocIdSetIteratorover matching documents. The returned iterator will either be positioned on-1if no documents have been scored yet,DocIdSetIterator.NO_MORE_DOCSif all documents have been scored already, or the last document id that has been scored otherwise. The returned iterator is a view: calling this method several times will return iterators that have the same state. -
twoPhaseIterator
Description copied from class:ScorerOptional method: Return aTwoPhaseIteratorview of thisScorer. A return value ofnullindicates that two-phase iteration is not supported. Note that the returnedTwoPhaseIterator'sapproximationmust advance synchronously with theScorer.iterator(): advancing the approximation must advance the iterator and vice-versa. Implementing this method is typically useful onScorers that have a high per-document overhead in order to confirm matches. The default implementation returnsnull.- Overrides:
twoPhaseIteratorin classScorer
-
docID
public int docID()Description copied from class:ScorableReturns the doc ID that is currently being scored. -
score
Description copied from class:ScorableReturns the score of the current document matching the query.- Specified by:
scorein classScorable- Throws:
IOException
-
getMaxScore
Description copied from class:ScorerReturn the maximum score that documents between the lasttargetthat this iterator wasshallow-advancedto included andupToincluded.- Specified by:
getMaxScorein classScorer- Throws:
IOException
-