[
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: [email protected]
For additional commands, e-mail: [email protected]