Class MaxScoreBulkScorer

java.lang.Object
org.apache.lucene.search.BulkScorer
org.apache.lucene.search.MaxScoreBulkScorer

final class MaxScoreBulkScorer extends BulkScorer
  • Field Details

    • INNER_WINDOW_SIZE

      static final int INNER_WINDOW_SIZE
      See Also:
    • maxDoc

      private final int maxDoc
    • allScorers

      final DisiWrapper[] allScorers
    • scratch

      private final DisiWrapper[] scratch
    • essentialQueue

      private final DisiPriorityQueue essentialQueue
    • firstEssentialScorer

      int firstEssentialScorer
    • firstRequiredScorer

      int firstRequiredScorer
    • nextMinCompetitiveScore

      float nextMinCompetitiveScore
    • cost

      private final long cost
    • minCompetitiveScore

      float minCompetitiveScore
    • scorable

      private final MaxScoreBulkScorer.Score scorable
    • maxScoreSums

      final double[] maxScoreSums
    • filter

      private final DisiWrapper filter
    • windowMatches

      private final long[] windowMatches
    • windowScores

      private final double[] windowScores
    • numOuterWindows

      private int numOuterWindows
    • numCandidates

      private int numCandidates
    • minWindowSize

      private int minWindowSize
  • Constructor Details

  • Method Details

    • score

      public int score(LeafCollector collector, Bits acceptDocs, int min, int max) throws IOException
      Description copied from class: BulkScorer
      Collects matching documents in a range and return an estimation of the next matching document which is on or after max.

      The return value must be:

      min is the minimum document to be considered for matching. All documents strictly before this value must be ignored.

      Although max would be a legal return value for this method, higher values might help callers skip more efficiently over non-matching portions of the docID space.

      For instance, a Scorer-based implementation could look like below:

       private final Scorer scorer; // set via constructor
      
       public int score(LeafCollector collector, Bits acceptDocs, int min, int max) throws IOException {
         collector.setScorer(scorer);
         int doc = scorer.docID();
         if (doc < min) {
           doc = scorer.advance(min);
         }
         while (doc < max) {
           if (acceptDocs == null || acceptDocs.get(doc)) {
             collector.collect(doc);
           }
           doc = scorer.nextDoc();
         }
         return doc;
       }
       
      Specified by:
      score in class BulkScorer
      Parameters:
      collector - The collector to which all matching documents are passed.
      acceptDocs - Bits that represents the allowed documents to match, or null if they are all allowed to match.
      min - Score starting at, including, this document
      max - Score up to, but not including, this doc
      Returns:
      an under-estimation of the next matching doc after max
      Throws:
      IOException
    • scoreInnerWindow

      private void scoreInnerWindow(LeafCollector collector, Bits acceptDocs, int max, DisiWrapper filter) throws IOException
      Throws:
      IOException
    • scoreInnerWindowWithFilter

      private void scoreInnerWindowWithFilter(LeafCollector collector, Bits acceptDocs, int max, DisiWrapper filter) throws IOException
      Throws:
      IOException
    • scoreInnerWindowSingleEssentialClause

      private void scoreInnerWindowSingleEssentialClause(LeafCollector collector, Bits acceptDocs, int upTo) throws IOException
      Throws:
      IOException
    • scoreInnerWindowAsConjunction

      private void scoreInnerWindowAsConjunction(LeafCollector collector, Bits acceptDocs, int max) throws IOException
      Throws:
      IOException
    • scoreInnerWindowMultipleEssentialClauses

      private void scoreInnerWindowMultipleEssentialClauses(LeafCollector collector, Bits acceptDocs, int max) throws IOException
      Throws:
      IOException
    • computeOuterWindowMax

      private int computeOuterWindowMax(int windowMin) throws IOException
      Throws:
      IOException
    • updateMaxWindowScores

      void updateMaxWindowScores(int windowMin, int windowMax) throws IOException
      Throws:
      IOException
    • scoreNonEssentialClauses

      private void scoreNonEssentialClauses(LeafCollector collector, int doc, double essentialScore, int numNonEssentialClauses) throws IOException
      Throws:
      IOException
    • partitionScorers

      boolean partitionScorers()
    • nextCandidate

      private int nextCandidate(int rangeEnd)
      Return the next candidate on or after rangeEnd.
    • cost

      public long cost()
      Description copied from class: BulkScorer
      Same as DocIdSetIterator.cost() for bulk scorers.
      Specified by:
      cost in class BulkScorer