关于应用中根据距离排序的问题
距离计算使用了 redis 的 GEO
目前使用的方案是 在模型添加时 在 redis 中存储包含模型 id 的经纬度信息。
查询的时候携带 经纬度信息 从 redis 取出距离然后逐个添加到模型上,
要根据距离排序的话使用了 sql 语句 orderBy('FIELD(id, 1,2,3,4....,1000)') 如果数据过多的话会导致查询巨慢。
有没有什么好的距离排序的解决方案可以用。
关于 LearnKu
可以考虑添加个
mysql函数调用:
我只是个搬运工,以前的项目别人写的,我也不知道这是啥算法,纯MySQL即可。
可以切换成postgresql,天然支持地理坐标,哈哈。
我是用 mysql 自带函数, 有版本限制
st_distance_sphere( point(longitude1, latitude1), point(longitude2,latitude2) )这个试下,不过有点问题,经度存在跨越东西半球时候的计算问题,所以限制了范围。
坐标在国内,不在太平洋上应该没问题。
可以用 ElasticSearch