Uploaded image for project: 'Lucene - Core'
  1. Lucene - Core
  2. LUCENE-10151

Add timeout support to IndexSearcher

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 9.3
    • core/search
    • None
    • New

    Description

      I'd like to explore adding optional "timeout" capabilities to IndexSearcher. This would enable users to (optionally) specify a maximum time budget for search execution. If the search "times out", partial results would be available.

      This idea originated on the dev list (thanks jpountz for the suggestion). Thread for reference: http://mail-archives.apache.org/mod_mbox/lucene-dev/202110.mbox/%3CCAL8PwkZdNGmYJopPjeXYK%3DF7rvLkWon91UEXVxMM4MeeJ3UHxQ%40mail.gmail.com%3E 

      A couple things to watch out for with this change:

      1. We want to make sure it's robust to a two-phase query evaluation scenario where the "approximate" step matches a large number of candidates but the "confirmation" step matches very few (or none). This is a particularly tricky case.
      2. We want to make sure the TotalHits#Relation reported by TopDocs is GREATER_THAN_OR_EQUAL_TO if the query times out
      3. We want to make sure it plays nice with the LRUCache since it iterates the query to pre-populate a BitSet when caching. That step shouldn't be allowed to overrun the timeout. The proper way to handle this probably needs some thought.

      Attachments

        Activity

          People

            Unassigned Unassigned
            gsmiller Greg Miller
            Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 3h 40m
                3h 40m