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

QueryBuilder should build side-paths query (graph query) lazily

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • None
    • 6.5, 7.0
    • None
    • None
    • New

    Description

      In LUCENE-7638 we generate a query for each multi-token path in the graph and combine them at the end in a boolean query.
      This can lead to OOM when the number of path is big, instead we should build the disjunction of these paths lazily in order to throw "too many clauses" early if the number of paths is bigger than max boolean clauses.
      For instance a shingle filter with shingles of different size produces a graph with multiple side paths at each position. If the input query has a lot of tokens, the number of paths (query) created is exponential. For this use case it is maybe preferable to disallow graph query analysis completely but when allowed we should also be protected against combinatorial explosion.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned
            jim.ferenczi Jim Ferenczi
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment