一尘不染

邻近搜索

mysql

应用程序如何执行邻近搜索?例如,用户输入邮政编码,然后应用程序按距离排序列出20英里内的所有企业。

我想在PHP和MySQL中构建类似的东西。这种方法正确吗?

  1. 获取我感兴趣的位置的地址并将其存储在数据库中
  2. 使用Google的地理编码服务对所有地址进行地理编码
  3. 编写包含Haversine公式的数据库查询以进行邻近搜索和排序

这个可以吗?在第3步中,我将计算每个查询的接近度。有一个PROXIMITY表,列出每个企业与几个参考位置之间的距离,更好吗?


阅读 402

收藏
2020-05-17

共1个答案

一尘不染

如果有足够的记录来决定速度,那么可以采用这种方法提前对其进行索引。

在侧面定义约20英里的垃圾箱网格。将垃圾箱编号与每个商店的记录一起存储。在搜索时,计算与搜索点相距20英里半径的所有垃圾箱的数量。然后检索所有这些存储区中的所有存储,然后像以前一样进行。

2020-05-17