Class ValueSourceScorer


  • 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.

    See Also:
    FunctionQuery
    • Method Detail

      • matches

        public abstract boolean matches​(int doc)
                                 throws java.io.IOException
        Override to decide if this document matches. It's called by TwoPhaseIterator.matches().
        Throws:
        java.io.IOException
      • iterator

        public DocIdSetIterator iterator()
        Description copied from class: Scorer
        Return a DocIdSetIterator 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.
        Specified by:
        iterator in class Scorer
      • twoPhaseIterator

        public TwoPhaseIterator twoPhaseIterator()
        Description copied from class: Scorer
        Optional method: Return a TwoPhaseIterator 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.
        Overrides:
        twoPhaseIterator in class Scorer
      • docID

        public int docID()
        Description copied from class: Scorable
        Returns the doc ID that is currently being scored.
        Specified by:
        docID in class Scorable
      • score

        public float score()
                    throws java.io.IOException
        Description copied from class: Scorable
        Returns the score of the current document matching the query.
        Specified by:
        score in class Scorable
        Throws:
        java.io.IOException
      • getMaxScore

        public float getMaxScore​(int upTo)
                          throws java.io.IOException
        Description copied from class: Scorer
        Return the maximum score that documents between the last target that this iterator was shallow-advanced to included and upTo included.
        Specified by:
        getMaxScore in class Scorer
        Throws:
        java.io.IOException