public abstract class ValueSourceScorer extends Scorer
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.
FunctionQueryScorable.ChildScorable| Modifier and Type | Field and Description |
|---|---|
private DocIdSetIterator |
disi |
private TwoPhaseIterator |
twoPhaseIterator |
protected FunctionValues |
values |
| Modifier | Constructor and Description |
|---|---|
protected |
ValueSourceScorer(Weight weight,
LeafReaderContext readerContext,
FunctionValues values) |
| Modifier and Type | Method and Description |
|---|---|
int |
docID()
Returns the doc ID that is currently being scored.
|
float |
getMaxScore(int upTo)
Return the maximum score that documents between the last
target
that this iterator was shallow-advanced to
included and upTo included. |
DocIdSetIterator |
iterator()
Return a
DocIdSetIterator over matching documents. |
abstract boolean |
matches(int doc)
Override to decide if this document matches.
|
float |
score()
Returns the score of the current document matching the query.
|
TwoPhaseIterator |
twoPhaseIterator()
Optional method: Return a
TwoPhaseIterator view of this
Scorer. |
advanceShallow, getWeightgetChildren, setMinCompetitiveScoreprotected final FunctionValues values
private final TwoPhaseIterator twoPhaseIterator
private final DocIdSetIterator disi
protected ValueSourceScorer(Weight weight, LeafReaderContext readerContext, FunctionValues values)
public abstract boolean matches(int doc)
throws java.io.IOException
TwoPhaseIterator.matches().java.io.IOExceptionpublic DocIdSetIterator iterator()
ScorerDocIdSetIterator 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.public TwoPhaseIterator twoPhaseIterator()
ScorerTwoPhaseIterator view of this
Scorer. A return value of null indicates that
two-phase iteration is not supported.
Note that the returned TwoPhaseIterator's
approximation must
advance synchronously with the Scorer.iterator(): advancing the
approximation must advance the iterator and vice-versa.
Implementing this method is typically useful on Scorers
that have a high per-document overhead in order to confirm matches.
The default implementation returns null.twoPhaseIterator in class Scorerpublic int docID()
Scorablepublic float score()
throws java.io.IOException
Scorablepublic float getMaxScore(int upTo)
throws java.io.IOException
Scorertarget
that this iterator was shallow-advanced to
included and upTo included.getMaxScore in class Scorerjava.io.IOException