You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Steve Rowe (JIRA)" <ji...@apache.org> on 2017/09/21 17:02:00 UTC
[jira] [Updated] (LUCENE-7974) Add N-dimensional FloatPoint
K-nearest-neighbor implementation
[ https://issues.apache.org/jira/browse/LUCENE-7974?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Steve Rowe updated LUCENE-7974:
-------------------------------
Attachment: LUCENE-7974.patch
Patch implementing the idea. Reviews welcome.
Some implementation notes:
* Most of the implementation was directly stolen from {{NearestNeighbor}}, which should incidentally be renamed to indicate that it's specific to {{LatLonPoint}}; this patch doesn't do that.
* The new test was also mostly directly stolen from {{TestNearest}}. I removed testing of sorting multi-dimensional points by distance from a given point, though, since AFAICT {{FloatPoint}} doesn't have this functionality (see LUCENE-7099 for the LatLonPoint impl).
* Most comparisons are of distance squared rather than distance, to avoid {{Math.sqrt()}} calls. There are a couple of (non-squared) distance-based optimizations though to disqualify cells and individual point values that are beyond the search radius in one dimension.
* I tried to switch the (bounded) hit queue from Java's {{PriorityQueue}} to Lucene's implementation (as mentioned in a TODO in the {{LatLonPoint}} impl), but it was much much slower (like an order of magnitude-ish). I didn't look into why, but I reverted back to the Java impl.
> Add N-dimensional FloatPoint K-nearest-neighbor implementation
> --------------------------------------------------------------
>
> Key: LUCENE-7974
> URL: https://issues.apache.org/jira/browse/LUCENE-7974
> Project: Lucene - Core
> Issue Type: New Feature
> Components: modules/sandbox
> Reporter: Steve Rowe
> Assignee: Steve Rowe
> Priority: Minor
> Attachments: LUCENE-7974.patch
>
>
> From LUCENE-7069:
> {quote}
> KD trees (used by Lucene's new dimensional points) excel at finding "nearest neighbors" to a given query point ... I think we should add this to Lucene's sandbox
> [...]
> It could also be generalized to more than 2 dimensions, but for now I'm making the class package private in sandbox for just the geo2d (lat/lon) use case.
> {quote}
> This issue is to generalize {{LatLonPoint.nearest()}} to more than 2 dimensions.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org