[ 
https://issues.apache.org/jira/browse/LUCENE-7166?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Muir updated LUCENE-7166:
--------------------------------
    Attachment: LUCENE-7166.patch

Attached is a patch:
* fixes Geo random tests to not quantize query rectangles. 
* fixes testRectBoundariesAreInclusive to properly quantize its rectangle (for 
an exact inclusive test), and then test around that boundary with 
Math.nextUp/Math.nextDown
* fixes LatLonPoint encoding tests to not just use e.g. 
nextLatitude/nextLongitude, but to also walk the double space with 
Math.nextUp/nextDown.
* fixes LatLonPoint encoding to always correctly round down.
* fixes LatLonPoint box generation code to correctly round minimum values so 
false positives are never brought in.
* fixes GeoPoint bounding box impl to not quantize range endpoints at all, so 
false positives are never brought in.

Note that GeoPoint's quantization is still inconsistent. Its not always 
rounding down. I don't think it makes sense to fix that here, instead it will 
be easier to just fix it with LUCENE-7165. Instead I fixed it by just removing 
its quantization. Its box query is quite different from LatLonPoint: its a 
two-phase confirm approach already, so it weeds out the false positives that 
way (once i removed the bogus quantization of these endpoints). GeoPoint cannot 
be changed to work like LatLonPoint's bounding box (which is more efficient), 
until its encoding is fixed to have consistent rounding. This is no change from 
how it works today, but the inconsistency does kinda suck. 


> fix quantization bugs in LatLonPoint and GeoPointField, remove test leniency
> ----------------------------------------------------------------------------
>
>                 Key: LUCENE-7166
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7166
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Robert Muir
>         Attachments: LUCENE-7166.patch
>
>
> Currently a few remaining tests (around newRectQuery) are lenient and 
> quantize the query rectangles. This is masking several bugs:
> 1. Both LatLonPoint and GeoPointField's bbox queries quantize their endpoints 
> incorrectly at query-time, which can e.g. cause it to bring in false positive 
> results
> 2. Tests have always been lenient about this (either by using epsilons or 
> incorrectly quantizing the query rectangles in tests), hiding the above. 
> 3. Both LatLonPoint and GeoPointField still have rounding issues at 
> quantization. For very special values they do not always consistently round 
> in one direction.
> 4. Random encoding tests will never find the above issue, hiding it. This is 
> because you need very special double values that the current stuff (e.g. 
> {{-180 + 360.0 * random().nextDouble()}} will never find!).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to