【发布时间】:2017-01-16 18:15:16
【问题描述】:
我有以下用例:
我希望能够在距离给定用户 lat long 半径 x 公里的某个圆内搜索我的 lucene 文档。
我还想按距离对文档进行排序。
我还需要稍后将距离值显示给用户。
在不索引任何额外内容和考虑性能的情况下,哪种空间策略最适合我。
【问题讨论】:
标签: lucene geospatial spatial
我有以下用例:
我希望能够在距离给定用户 lat long 半径 x 公里的某个圆内搜索我的 lucene 文档。
我还想按距离对文档进行排序。
我还需要稍后将距离值显示给用户。
在不索引任何额外内容和考虑性能的情况下,哪种空间策略最适合我。
【问题讨论】:
标签: lucene geospatial spatial
根据您的要求,我认为最好的选择可能是PointVectorStrategy,这是最简单的,也满足您的条件:
Simple SpatialStrategy,表示两个数字字段中的点。 该策略的最佳功能是不错的距离排序。
特点:
- 仅索引点;每个字段值只有一个。
- 可以按矩形或圆形查询。
- 支持 SpatialOperation.Intersects 和 SpatialOperation.IsWithin。
- 需要 SpatialStrategy.makeDistanceValueSource(org.locationtech.spatial4j.shape.Point) 的 DocValues 以及使用 Circle 进行搜索。
是的,它需要您为 DocValues 编制索引,但如果我理解正确,所有空间策略都不会免费提供所需的功能。
【讨论】: