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

Incorrect Bounding Box calculation results in the exclusion of valid data locations

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Won't Fix
    • 2.9.1, 3.0
    • 4.0-BETA
    • modules/spatial
    • None
    • New

    Description

      I have found a scenario where some of my location data is not being returned. The calculated distance between my search origin and the data is well within my search radius but the data is not being returned.

      I have traced this down to what I think is an error when calculating the boundary box which is used to determine the Shape for the CartesianShapeFilter in CartesianPolyFilterBuilder.getBoxShape()

      The boundary box calculated by LLRect.createBox() is incorrect. The box returned is a box that fits WITHIN the search circle, where the four corners of the box intersect the circle line. This creates 4 regions where data points are not included - these are regions that are in the circle but outside the box.

      What I is required is a boundary box that fully CONTAINS the search circle. As a side effect you would end up with 4 regions outside of the circle but inside the box. This would potentially return data that are not real hits but these can be filtered out by a more precise distance comparison.

      I will attach a test class that covers the issue with more details and a proposed fix - a one liner in LLRect.java

      I would appreciate if someone could verify my findings. All my data tests pass with this fix but there is one test case in Lucene 3.0.0 that fails and I can't figure out why. TestCartesian.testAntiM().

      Attachments

        1. BoundingBoxCalucationIssueTest.java
          9 kB
          Julian Atkinson
        2. test.html
          2 kB
          Julian Atkinson

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jpa458 Julian Atkinson
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: