我想在Hibernate中执行空间搜索。特别是,我想存储一些纬度/经度的项目,然后查询哪些项目在给定点的x km范围内。
我发现hibernate-search通过它的Lucene集成提供了support for spatial queries。
我也知道Lucene的空间模块在Lucene 4.0版中已经completely rewritten,但最新版本的hibernate-search使用的是Lucene的Lucene 3.6.2。
所以,我有几个问题:
答案 0 :(得分:4)
不是没有,我们幸运的是,由于同样的原因,我们有幸让一个地理位置专家加入团队:Nicolas想避免在Lucene中使用空间模块,因为它存在问题。
不,它是一组自定义的Lucene组件; Hibernate Search的嵌入式特性使我们的要求非常简单,至少在Lucene集成方面(距离数学仍然很有趣)。
从原始模块的灵感和动机到创建新扩展的限制,所以我不相信,假设它与我们谈论的已知限制相同。
很有可能,我们在这一点上的重点是提供合理且实用的API;由于今天涵盖的功能相对简单,我们可能不需要急于使用它,但我们不排除集成它。 Hibernate ORM也计划为Spatial类型提供更好的支持,因此我们可能希望集成自定义类型:欢迎使用help和advise,即使只是在用例或愿望表单中。
过去我们对API稳定性感到非常自豪,并会努力保持记录。我们肯定会升级到Lucene 4+,但这可能不得不打破一些API(不一定与Spatial相关)。我们将努力将变化保持在最低限度。这是不暴露太多的原因之一:确保我们保持实施的灵活性,至少现在我们正在准备升级。