1

我想在 Hibernate 中执行空间搜索。特别是,我想存储一些具有纬度/经度的项目,然后查询哪些项目在给定点的 x 公里范围内。

我发现休眠搜索通过它的 Lucene 集成提供对空间查询的支持。

我也知道 Lucene 中的空间模块已经在 Lucene 4.0 版中完全重写,但最新版本的hibernate-search使用的是 Lucene 的 Lucene 3.6.2。

所以,我有几个问题:

  1. hibernate-search 中的空间支持是否使用现已弃用的 lucene 空间模块?
  2. 或者休眠搜索是否使用来自 solr 的空间模块?
  3. 重写 lucene spatial 的原因之一是因为它不可靠/有问题。这是否意味着休眠搜索中的空间查询不可靠?
  4. hibernate-search 会在未来的版本中更改以支持新的 lucene-spatial 模块吗?(基于spatial4j
  5. 假设 hibernate-search 将来会升级到 Lucene 4+,那么新版本中的空间查询是否可能向后兼容当前的 hibernate-search API?
4

1 回答 1

4
  1. 不,不是,我们很幸运地让一位地理定位领域专家加入团队,原因与您相同:Nicolas 想避免在 Lucene 中使用空间模块,因为它存在问题。

  2. 不,它是一组自定义的 Lucene 组件;Hibernate Search 的嵌入式特性使我们的要求非常简单,至少在 Lucene 集成方面(距离数学仍然很有趣)。

  3. 从原始模块的灵感和动机到创建新扩展的限制,所以我相信不是,假设它与我们谈论的已知限制相同。

  4. 很有可能,我们此时的重点是提供一个合理实用的 API;有了今天介绍的相对简单的功能,我们可能不需要急于使用它,但我们并不排除集成它。Hibernate ORM 也计划对 Spatial 类型提供更好的支持,因此我们可能希望集成自定义类型:欢迎提供帮助和建议,即使只是在用例或愿望形式中。

  5. 我们过去一直为我们的 API 稳定性感到非常自豪,并将努力保持这一记录。我们肯定会升级到 Lucene 4+,但这可能会破坏一些 API(不一定与 Spatial 相关)。我们将努力将更改保持在最低限度。这是还没有暴露太多的原因之一:确保我们保持实施的灵活性,至少现在我们正在为升级做准备。

于 2013-01-10T23:58:51.327 回答