Class Scorer

java.lang.Object
org.apache.lucene.search.Scorable
org.apache.lucene.search.Scorer
Direct Known Subclasses:
ConstantScoreScorer, FilterScorer, IndriScorer, TermScorer

public abstract class Scorer extends Scorable
Expert: Common scoring functionality for different types of queries.

A Scorer exposes an iterator() over documents matching a query in increasing order of doc Id.

Document scores are computed using a given Similarity implementation.

NOTE: The values Float.Nan, Float.NEGATIVE_INFINITY and Float.POSITIVE_INFINITY are not valid scores. Certain collectors (eg TopScoreDocCollector) will not properly collect hits with these scores.

  • Field Details

    • weight

      protected final Weight weight
      the Scorer's parent Weight
  • Constructor Details

    • Scorer

      protected Scorer(Weight weight)
      Constructs a Scorer
      Parameters:
      weight - The scorers Weight.
  • Method Details

    • getWeight

      public Weight getWeight()
      returns parent Weight
      WARNING: This API is experimental and might change in incompatible ways in the next release.
    • iterator

      public abstract DocIdSetIterator iterator()
      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.

    • twoPhaseIterator

      public TwoPhaseIterator twoPhaseIterator()
      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 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.

    • advanceShallow

      public int advanceShallow(int target) throws IOException
      Advance to the block of documents that contains target in order to get scoring information about this block. This method is implicitly called by DocIdSetIterator.advance(int) and DocIdSetIterator.nextDoc() on the returned doc ID. Calling this method doesn't modify the current DocIdSetIterator.docID(). It returns a number that is greater than or equal to all documents contained in the current block, but less than any doc IDS of the next block. target must be >= Scorable.docID() as well as all targets that have been passed to advanceShallow(int) so far.
      Throws:
      IOException
    • getMaxScore

      public abstract float getMaxScore(int upTo) throws IOException
      Return the maximum score that documents between the last target that this iterator was shallow-advanced to included and upTo included.
      Throws:
      IOException