0

我想实现一个功能,其中可以按与用户位置的距离排序显示附近场所的列表。我现在采用的方法是将 lat 和 lon 值存储为浮点数,并进行查询以查找用户位置的 +/- 值(搜索向北、南、东和西延伸的正方形用户)。然后我对结果集进行快速计算,确定我的业务逻辑中的距离和排序。现在我从主要使用关系数据库的人的角度来处理这个问题(该应用程序正在运行带有 Hibernate 的 MySQL),但是是否有更好的方法(在 Neo4J 等不同的数据库中或使用更好的列类型?)

此外,我的方法对于 0 lat 或 0 lon 或附近的查询有一个半复杂的解决方法)。

至于我对最优的工作定义,我正在寻找可扩展到 10 英里半径范围内的数百个场馆和总共数十万个场馆的方法。换句话说,大约是 SimpleGEO 的 1%,所以如果这个问题的规模不需要最佳解决方案,那么“你没事”也将是一个有趣的答案,尽管我很想知道为什么)

4

3 回答 3

1

你期待 Hibernate Spatial 吗?

Hibernate Spatial 是 Hibernate 的通用扩展,用于处理地理数据。并且 HS 有 MySQL Provider。

http://www.hibernatespatial.org/

于 2013-04-20T17:36:32.313 回答
1

MongoDB 具有对地理空间索引的原生支持和对查询语言的扩展,以支持许多不同的查询地理空间文档的方式。

但是,如果您正在寻找关系数据库,请尝试使用 PostGIS 的 PostgreSQL。

于 2013-04-20T17:17:33.087 回答
1

你可以看看 Lucene/Solr。Lucene至少从 v2.9 开始支持位置感知搜索。

如果您担心 Lucene 的复杂性,可以使用Hibernate Search,它旨在将所有数据库更改透明地复制到 Lucene。

于 2013-04-20T17:45:27.380 回答