【问题标题】:hibernate-search, spatial queries and the new lucene spatial modulehibernate-search、空间查询和新的 lucene 空间模块
【发布时间】:2013-01-10 13:49:36
【问题描述】:

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

我发现hibernate-search 通过它的 Lucene 集成提供了support for spatial queries

我也知道 Lucene 中的空间模块在 Lucene 4.0 版本中一直是completely rewritten,但最新版本的hibernate-search 使用的是 Lucene 3.6.2 的 Lucene。

所以,我有几个问题:

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

【问题讨论】:

  • 仅供参考,Lucene 3 空间模块有问题。我听说它在美国大陆“似乎行得通”,但在其他地方却没有那么多。希望从事 Hibernate-search 工作的人可以为您的问题提供真正的答案。

标签: hibernate solr lucene spatial hibernate-search


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

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

  3. 原始模块对创建新扩展的灵感和动机的限制,所以我认为不会,假设它与我们讨论的已知限制相同。

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

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

【讨论】:

  • 感谢您的详尽回答。我的用例是这样的:给定两个表 Item 和 Address,其中 Item 有一个 @ManyToOne 映射到 Address 并且 Address 有一个纬度/经度,返回距离一个点 1 公里(lat / lng)的所有项目。如果可能的话,我想先按最近的项目排序,我希望每个项目与该点的距离都包含在结果集中。
  • 仅供参考,可以找到使用新的 Lucene 4.0 空间库的示例here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 2022-08-04
相关资源
最近更新 更多