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

SpanBoostQuery.rewrite was incomplete for boost==1 factor

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 8.11.1
    • 10.0 (main), 8.11.2, 9.2
    • None
    • None
    • New

    Description

      (This bug report concerns pre-9.0 code only but it's so subtle that it warrants sharing I think and maybe fixing if there was to be a 8.11.2 release in future.)

      Some existing code e.g. https://github.com/apache/lucene-solr/blob/releases/lucene-solr/8.11.1/lucene/queryparser/src/java/org/apache/lucene/queryparser/xml/builders/SpanNearBuilder.java#L54 adds a SpanBoostQuery even if there is no boost or the boost factor is 1.0 i.e. technically wrapping is unnecessary.

      Query rewriting should counteract this somewhat except it might not e.g. note at https://github.com/apache/lucene-solr/blob/releases/lucene-solr/8.11.1/lucene/core/src/java/org/apache/lucene/search/spans/SpanBoostQuery.java#L81-L83 how the rewrite is a no-op i.e. this.query.rewrite is not called!

      This can then manifest in strange ways e.g. during highlighting:

      ...
      java.lang.IllegalArgumentException: Rewrite first!
      	at org.apache.lucene.search.spans.SpanMultiTermQueryWrapper.createWeight(SpanMultiTermQueryWrapper.java:99)
      	at org.apache.lucene.search.spans.SpanNearQuery.createWeight(SpanNearQuery.java:183)
      	at org.apache.lucene.search.highlight.WeightedSpanTermExtractor.extractWeightedSpanTerms(WeightedSpanTermExtractor.java:295)
      	...
      

      This stacktrace is not from 8.11.1 code but the general logic is that at line 293 rewrite was called (except it didn't a full rewrite because of SpanBoostQuery wrapping around the SpanNearQuery) and so then at line 295 the IllegalArgumentException("Rewrite first!") arises: https://github.com/apache/lucene-solr/blob/releases/lucene-solr/8.11.1/lucene/core/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java#L101

      Attachments

        Issue Links

          Activity

            People

              cpoerschke Christine Poerschke
              cpoerschke Christine Poerschke
              Votes:
              0 Vote for this issue
              Watchers:
              4 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 - 50m
                  50m