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

Can we simplify conjunctions of range queries automatically?

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Lucene Fields:
      New

      Description

      BooleanQuery#rewrite already has some logic to make queries more efficient, such as deduplicating filters or rewriting boolean queries that wrap a single positive clause to that clause.

      It would be nice to also simplify conjunctions of range queries, so that eg. foo: [5 TO *] AND foo:[* TO 20] would be rewritten to foo:[5 TO 20]. When constructing queries manually or via the classic query parser, it feels unnecessary as this is something that the user can fix easily. However if you want to implement a query parser that only allows specifying one bound at once, such as Gmail (after:2018-12-31 https://support.google.com/mail/answer/7190?hl=en) or GitHub (updated:>=2018-12-31 https://help.github.com/en/articles/searching-issues-and-pull-requests#search-by-when-an-issue-or-pull-request-was-created-or-last-updated) then you might end up with inefficient queries if the end user specifies both an upper and a lower bound. It would be nice if we optimized those automatically.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              jpountz Adrien Grand
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated: