Nicholas Knize created LUCENE-8736:
--------------------------------------

             Summary: LatLonShapePolygonQuery returning incorrect WITHIN 
results with shared boundaries
                 Key: LUCENE-8736
                 URL: https://issues.apache.org/jira/browse/LUCENE-8736
             Project: Lucene - Core
          Issue Type: Bug
            Reporter: Nicholas Knize


Triangles that are {{WITHIN}} a target polygon query that also share a boundary 
with the polygon are incorrectly reported as {{CROSSES}} instead of {{INSIDE}}. 
This leads to incorrect {{WITHIN}} query results  as demonstrated in the 
following test:

{code:java}
  public void testWithinFailure() throws Exception {
    Directory dir = newDirectory();
    RandomIndexWriter w = new RandomIndexWriter(random(), dir);

    // test polygons:
    Polygon indexPoly1 = new Polygon(new double[] {4d, 4d, 3d, 3d, 4d}, new 
double[] {3d, 4d, 4d, 3d, 3d});
    Polygon indexPoly2 = new Polygon(new double[] {2d, 2d, 1d, 1d, 2d}, new 
double[] {6d, 7d, 7d, 6d, 6d});
    Polygon indexPoly3 = new Polygon(new double[] {1d, 1d, 0d, 0d, 1d}, new 
double[] {3d, 4d, 4d, 3d, 3d});
    Polygon indexPoly4 = new Polygon(new double[] {2d, 2d, 1d, 1d, 2d}, new 
double[] {0d, 1d, 1d, 0d, 0d});

    // index polygons:
    Document doc;
    addPolygonsToDoc(FIELDNAME, doc = new Document(), indexPoly1);
    w.addDocument(doc);
    addPolygonsToDoc(FIELDNAME, doc = new Document(), indexPoly2);
    w.addDocument(doc);
    addPolygonsToDoc(FIELDNAME, doc = new Document(), indexPoly3);
    w.addDocument(doc);
    addPolygonsToDoc(FIELDNAME, doc = new Document(), indexPoly4);
    w.addDocument(doc);

    ///// search //////
    IndexReader reader = w.getReader();
    w.close();
    IndexSearcher searcher = newSearcher(reader);

    Polygon[] searchPoly = new Polygon[] {new Polygon(new double[] {4d, 4d, 0d, 
0d, 4d}, new double[] {0d, 7d, 7d, 0d, 0d})};

    Query q = LatLonShape.newPolygonQuery(FIELDNAME, QueryRelation.WITHIN, 
searchPoly);
    assertEquals(4, searcher.count(q));
    IOUtils.close(w, reader, dir);
  }
{code}




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to