Class TimeLimitingBulkScorer


  • public class TimeLimitingBulkScorer
    extends BulkScorer
    The TimeLimitingBulkScorer is used to timeout search requests that take longer than the maximum allowed search time limit. After this time is exceeded, the search thread is stopped by throwing a TimeLimitingBulkScorer.TimeExceededException.
    See Also:
    ExitableDirectoryReader
    • Constructor Detail

      • TimeLimitingBulkScorer

        public TimeLimitingBulkScorer​(BulkScorer bulkScorer,
                                      QueryTimeout queryTimeout)
        Create a TimeLimitingBulkScorer wrapper over another BulkScorer with a specified timeout.
        Parameters:
        bulkScorer - the wrapped BulkScorer
        queryTimeout - max time allowed for collecting hits after which TimeLimitingBulkScorer.TimeExceededException is thrown
    • Method Detail

      • 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