想了解下最短距离算法是怎么实现的??类似美团上面的,我排序商家的时候选用距离优选,后台是怎么实现的昵??

黑帽子 发布于 2016/09/22 14:24
阅读 2K+
收藏 2
想了解下最短距离算法是怎么实现的??类似美团上面的,我排序商家的时候选用距离优选,后台是怎么实现的昵??难道是把我的经纬度和所有商家一个一个的去比对计算,得到的结果集合再排序?感觉商家很多的话,这样循环计算应该会很慢,有什么算法可以实现的吗??
加载中
1
itian277
itian277

MongoDB 带有地理位置查询啊 

Redis 前两天最新版本也支持这功能了

0
蒋默
蒋默
我只能说,你猜对了。
0
求是科技
求是科技

0.拿得到商家的经纬度

1.拿得到用户定位点的经纬度

2.设置范围(假设500米)

3.计算附近的商家(这肯定是循环计算的)

4.第一页显示的数量有限,假设用户初始化进来显示20条,向上滑动的时候,我们修改范围为1000就可以查到更多的商家嘛

IdleMan
IdleMan
没见过可以隔空聊天,走过去却要半天的场景?
0
p
phpprince

不需要依赖其他接口:两个经纬度距离越接近,那么两个坐标经度、纬度差值应该越小,按照指定范围内经度和纬度两个条件同时满足(两个坐标经纬度的差值)取部分数据(可以利用两个差值同时升序排序),计算出距离。

只是大致的想法。

0
抢小孩糖吃
抢小孩糖吃
设置范围之后查询,对数据库内容删选很多啊,是不是固定按照街区之类的进行划分?猜的
0
神恰恰
神恰恰
分批显示,不要一下子都显示出来啊,比如有100家,20家20家 显示啊 反正是异步的
0
_
_Yud
可以按直接距离(三角函数)先过滤,得到少量的结果,然后再精确过滤.
0
p2ng
p2ng

其实打滴滴的距离,感觉也是直线距离。

有一次司机接单距离不到1km,但是不同方向,需要掉头,所以总计算下来,不止1km。所以司机退单了...呵呵

0
开不了囧
开不了囧
mysql已经提供了个算距离的方法st_distance,查数据库的时候根据经纬度直接算,然后排序就行了
0
温安适
温安适
使用geohash比较用户与商户的距离
温安适
温安适
回复 @黑帽子 : 可以,先找出5km以内商户,之后按照坐标比较直线距离即可,根据28定律,可以大致完成相应工作
黑帽子
黑帽子
但这个不能做最近排序吧。
x
xinyd
asdfasdfasdfasdfasdfasdfasdfasdfsadf
返回顶部
顶部