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

RangeQuery without lower term and inclusive=false skips blank fields

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 2.9
    • core/search
    • None
    • Operating System: other
      Platform: Other

    • 9782

    Description

      This was reported by "James Ricci" <james@riccinursery.com> at:
      http://nagoya.apache.org/eyebrowse/ReadMsg?listName=lucene-user@jakarta.apache.org&msgNo=1835

      When you create a ranged query and omit the lower term, my expectation
      would be that I would find everything less than the upper term. Now if I pass
      false for the inclusive term, then I would expect that I would find all
      terms less than the upper term excluding the upper term itself.

      What is happening in the case of lower_term=null, upper_term=x,
      inclusive=false is that empty strings are being excluded because
      inclusive is set false, and the implementation of RangedQuery creates a default
      lower term of Term(fieldName, ""). Since it's not inclusive, it excludes "".
      This isn't what I intended, and I don't think it's what most people would
      imagine RangedQuery would do in the case I've mentioned.

      I equate lower=null, upper=x, inclusive=false to Field < x. lower=null,
      upper=x, inclusive=true would be Field <= x. In both cases, the only
      difference should be whether or not Field = x is true for the query.

      Attachments

        1. TestRangeQuery.patch
          5 kB
          Dejan Nenov
        2. LUCENE-38.patch
          6 kB
          Michael McCandless

        Activity

          People

            Unassigned Unassigned
            otis@apache.org Otis Gospodnetic
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: