Class BlockMaxConjunctionBulkScorer

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

final class BlockMaxConjunctionBulkScorer extends BulkScorer
BulkScorer implementation of BlockMaxConjunctionScorer that focuses on top-level conjunctions over clauses that do not have two-phase iterators. Use a Weight.DefaultBulkScorer around a BlockMaxConjunctionScorer if you need two-phase support. Another difference with BlockMaxConjunctionScorer is that this scorer computes scores on the fly in order to be able to skip evaluating more clauses if the total score would be under the minimum competitive score anyway. This generally works well because computing a score is cheaper than decoding a block of postings.
  • Field Details

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

      private void scoreWindow(LeafCollector collector, Bits acceptDocs, int min, int max, float maxWindowScore) throws IOException
      Throws:
      IOException
    • cost

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