Class DisjunctionMaxScorer


  • final class DisjunctionMaxScorer
    extends DisjunctionScorer
    The Scorer for DisjunctionMaxQuery. The union of all documents generated by the subquery scorers is generated in document number order. The score for each document is the maximum of the scores computed by the subquery scorers that generate that document, plus tieBreakerMultiplier times the sum of the scores for the other subqueries that generate the document.
    • Field Detail

      • subScorers

        private final java.util.List<Scorer> subScorers
      • tieBreakerMultiplier

        private final float tieBreakerMultiplier
    • Constructor Detail

      • DisjunctionMaxScorer

        DisjunctionMaxScorer​(Weight weight,
                             float tieBreakerMultiplier,
                             java.util.List<Scorer> subScorers,
                             ScoreMode scoreMode)
                      throws java.io.IOException
        Creates a new instance of DisjunctionMaxScorer
        Parameters:
        weight - The Weight to be used.
        tieBreakerMultiplier - Multiplier applied to non-maximum-scoring subqueries for a document as they are summed into the result.
        subScorers - The sub scorers this Scorer should iterate on
        Throws:
        java.io.IOException
    • Method Detail

      • score

        protected float score​(DisiWrapper topList)
                       throws java.io.IOException
        Description copied from class: DisjunctionScorer
        Compute the score for the given linked list of scorers.
        Specified by:
        score in class DisjunctionScorer
        Throws:
        java.io.IOException
      • advanceShallow

        public int advanceShallow​(int target)
                           throws java.io.IOException
        Description copied from class: Scorer
        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 Scorer.advanceShallow(int) so far.
        Overrides:
        advanceShallow in class Scorer
        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
      • setMinCompetitiveScore

        public void setMinCompetitiveScore​(float minScore)
                                    throws java.io.IOException
        Description copied from class: Scorable
        Optional method: Tell the scorer that its iterator may safely ignore all documents whose score is less than the given minScore. This is a no-op by default.

        This method may only be called from collectors that use ScoreMode.TOP_SCORES, and successive calls may only set increasing values of minScore.

        Overrides:
        setMinCompetitiveScore in class Scorable
        Throws:
        java.io.IOException