
比如有个数据中心列表,怎么找到距离用户输入的省市最近的数据中心,或者得到两地的距离; java 有这样的库或者有什么开源服务能做到?
1 xlzyxxn OP 有没有 V 友用过很好用的? |
2 vagusss 2024-05-16 15:37:02 +08:00 redis, es |
3 ZField 2024-05-16 16:58:11 +08:00 数量少,并发低直接算。 或者转成 GeoHash ,找到最近的再算距离,工具的话 github 上搜一搜有一堆。 |
4 wu00 2024-05-16 17:03:28 +08:00 数据库都有”point“字段类型的吧 |
5 gadfly3173 2024-05-16 17:06:16 +08:00 via Android 用数据库就是楼上说的,或者参考美团的 https://tech.meituan.com/2014/09/05/lucene-distance.html |
6 tairan2006 2024-05-16 17:17:13 +08:00 redis, mysql, pg 都有的 |
7 RicardoY 2024-05-16 17:56:13 +08:00 这个是典型的附近搜场景,直接用 JTS 就行了 |
8 dif 2024-05-16 18:00:18 +08:00 一般用 redis 。 |
9 codingmiao 2024-05-16 22:28:11 +08:00 几种我自己用的方案: 数据量很小时,直接 jts 在内存里遍历判断。 数据量大时,可以考虑在内存里搞一棵 Rtree https://www.khelekore.org/prtree/index.shtml 。 我自己撸了个变种,把 Rtree 从内存放倒图数据库 https://github.com/codingmiao/neo4j-rtree?tab=readme-ov-file#%E6%9C%80%E9%82%BB%E8%BF%91%E6%90%9C%E7%B4%A2 。 也可以给 pg 装个 postgis 插件来处理。 redis 用 geohash 来实现空间索引,优点是简单,但 geohash 的不连续性会导致某些坐标的查询性能骤降有点烦。 |
10 codingmiao 2024-05-16 22:36:32 +08:00 哦对了,mysql 的 geometry 就是个玩具,wgs84 的坐标 x y 非要反着存,linestring 会莫名其妙的不走索引等问题,非常不推荐使用 |
11 superliy 259 天前 @codingmiao 对比过 Rtree 和 postgis 哪个性能好吗,postgis 使用的索引 gist ,是不是比 rtree 更好? |