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 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:
  • Field Details

  • Constructor Details

  • Method Details

    • matches

      public abstract boolean matches(int doc) throws IOException
      Override to decide if this document matches. It's called by TwoPhaseIterator.matches().
      Throws:
      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 IOException
      Description copied from class: Scorable
      Returns the score of the current document matching the query.
      Specified by:
      score in class Scorable
      Throws:
      IOException
    • getMaxScore

      public float getMaxScore(int upTo) throws 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:
      IOException