需求,根据当前地址,找出最近的门店。
基础材料: 当前地址:微信后台发给的 location_x,location_y 门店的地址,xx 路几号。
一个方法是确定门店的 location x,y,去计算,关键计算有普通对比的方法似乎有点慢咯。mongo 去年说要内建这个功能,不过我找是 postgresql 数据库。
另一个方法,当然是人家不屑的 gem 拉,不知道有木有类似的
任何方法,感谢指点
Mongodb 已经有 geospatial indexing 了,如果 postgres 最好用 postgis, 如果查找一个区域内的点,还好说,但如果算距某点最近的点并按距离排序,最好找数据库原生支持的。
MongoDB 的 Geospatial 文档:http://docs.mongodb.org/manual/applications/geospatial-indexes/
mongo 表示无压力啊。我有个站就是 mongodb,就是地图上随便点个位置,找最近的 5 家。 http://jjjg.027xf.com,看是不是满足你的要求?
我们是用 Solr 的 Geospatial 功能来做的,ruby 有 sunspot 这个很好用的 solr gem,可以直接支持。 它还能和全文索引集成在一起,挺方便的。
#12 楼 @quakewang #15 楼 @jonny solr 好像和 ruby 的配套使用是蛮成熟的了,前面用搜索时贪新用了 elasticsearch,也挺好用。solr 还有地理相关的功能阿,学习了。
在用 elasticsearch 之前用 sphinx/coreseek,那个确实快,后来有一些麻烦的逻辑功能,为了开发方便,就换了。不过 sphinx 只搜索吧,没有地理位置原生的东西吧。
为了吃饭,先忙业务活了,这些技术活以后有时间了慢慢研究,先谢过指导。