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 static final int
private final DocIdSetIterator
private final TwoPhaseIterator
protected final FunctionValues
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
ValueSourceScorer
(LeafReaderContext readerContext, FunctionValues values) -
Method Summary
Modifier and TypeMethodDescriptionint
docID()
Returns the doc ID that is currently being scored.float
getMaxScore
(int upTo) Return the maximum score that documents between the lasttarget
that this iterator wasshallow-advanced
to included andupTo
included.iterator()
Return aDocIdSetIterator
over matching documents.protected float
Cost evaluation function which defines the cost of access for the TwoPhaseIterator for this class This method should be overridden for specifying custom cost methods.abstract boolean
matches
(int doc) Override to decide if this document matches.float
score()
Returns the score of the current document matching the query.Optional method: Return aTwoPhaseIterator
view of thisScorer
.Methods inherited from class org.apache.lucene.search.Scorer
advanceShallow
Methods inherited from class org.apache.lucene.search.Scorable
getChildren, setMinCompetitiveScore, smoothingScore
-
Field Details
-
DEF_COST
private static final int DEF_COST- See Also:
-
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:Scorer
Return aDocIdSetIterator
over matching documents.The returned iterator will either be positioned on
-1
if no documents have been scored yet,DocIdSetIterator.NO_MORE_DOCS
if 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:Scorer
Optional method: Return aTwoPhaseIterator
view of thisScorer
. A return value ofnull
indicates that two-phase iteration is not supported.Note that the returned
TwoPhaseIterator
'sapproximation
must advance synchronously with theScorer.iterator()
: advancing the approximation must advance the iterator and vice-versa.Implementing this method is typically useful on
Scorer
s that have a high per-document overhead in order to confirm matches.The default implementation returns
null
.- Overrides:
twoPhaseIterator
in classScorer
-
docID
public int docID()Description copied from class:Scorer
Returns the doc ID that is currently being scored. -
score
Description copied from class:Scorable
Returns the score of the current document matching the query.- Specified by:
score
in classScorable
- Throws:
IOException
-
getMaxScore
Description copied from class:Scorer
Return the maximum score that documents between the lasttarget
that this iterator wasshallow-advanced
to included andupTo
included.- Specified by:
getMaxScore
in classScorer
- Throws:
IOException
-
matchCost
protected float matchCost()Cost evaluation function which defines the cost of access for the TwoPhaseIterator for this class This method should be overridden for specifying custom cost methods. Used byTwoPhaseIterator.matchCost()
for the instance owned by this class- Returns:
- cost of access
-