Class ValueSourceScorer
- java.lang.Object
-
- org.apache.lucene.search.Scorable
-
- org.apache.lucene.search.Scorer
-
- org.apache.lucene.queries.function.ValueSourceScorer
-
public abstract class ValueSourceScorer extends Scorer
Scorer
which returns the result ofFunctionValues.floatVal(int)
as the score for a document, and which filters out documents that don't matchmatches(int)
. This Scorer has aTwoPhaseIterator
. This is similar toFunctionQuery
, 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:
FunctionQuery
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.search.Scorable
Scorable.ChildScorable
-
-
Field Summary
Fields Modifier and Type Field Description private static int
DEF_COST
private DocIdSetIterator
disi
private TwoPhaseIterator
twoPhaseIterator
protected FunctionValues
values
-
Constructor Summary
Constructors Modifier Constructor Description protected
ValueSourceScorer(Weight weight, LeafReaderContext readerContext, FunctionValues values)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description int
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.DocIdSetIterator
iterator()
Return aDocIdSetIterator
over matching documents.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.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 aTwoPhaseIterator
view of thisScorer
.-
Methods inherited from class org.apache.lucene.search.Scorer
advanceShallow, getWeight
-
Methods inherited from class org.apache.lucene.search.Scorable
getChildren, setMinCompetitiveScore, smoothingScore
-
-
-
-
Field Detail
-
DEF_COST
private static final int DEF_COST
- See Also:
- Constant Field Values
-
values
protected final FunctionValues values
-
twoPhaseIterator
private final TwoPhaseIterator twoPhaseIterator
-
disi
private final DocIdSetIterator disi
-
-
Constructor Detail
-
ValueSourceScorer
protected ValueSourceScorer(Weight weight, LeafReaderContext readerContext, FunctionValues values)
-
-
Method Detail
-
matches
public abstract boolean matches(int doc) throws java.io.IOException
Override to decide if this document matches. It's called byTwoPhaseIterator.matches()
.- Throws:
java.io.IOException
-
iterator
public DocIdSetIterator 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
public TwoPhaseIterator 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:Scorable
Returns the doc ID that is currently being scored.
-
score
public float score() throws java.io.IOException
Description copied from class:Scorable
Returns the score of the current document matching the query.
-
getMaxScore
public float getMaxScore(int upTo) throws java.io.IOException
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:
java.io.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
-
-