附近商家算法

php中文网
发布: 2016-06-06 20:35:19
原创
1772人浏览过

<code>Shop表存储字段  Lat, Lng
</code>
登录后复制

现在使用方案为 通过 sql 语句进行距离的计算 之后 order by limit 进行分页 但在sql内进行计算,导致慢查询.

目前 有两种方案

<code>A方案 :  获取用户当前的经纬度 通过算法找到每条记录所在点的经纬度周围的一个大概范围,比方说正方形的四个点,然后使用mysql的空间计算

B方案 :通过 Geohash 算法 算出附近的商家 
</code>
登录后复制

前端通过接口获取数据进行分页,采用以上两种方案时,均为一次性拉取出附近商户的数据,之后进行距离的计算,根据距离的排序生成最终数组,此时数据分页 应该采用 根据数组的索引 计算偏移量进行分页的操作?

电子商务平台后台管理模板
电子商务平台后台管理模板

电子商务平台后台管理模板,蓝色风格,在网上发现这款模板之后就迷上了,不管是颜色搭配,还是交互方式的设计,应该都能算的上是一流,无奈自己对切图不熟,就一直晾着了,直到最近联系上了一位以前的设计朋友,请他帮我切割一下,才算了此“心愿”,现在把它贡献给大家,喜欢的朋友赶紧下拉,包含login.html登录页面和后台操作页面,并奉献出psd源文件,会photoshop的朋友可继续加工,但别忘了也拿出来共享

电子商务平台后台管理模板 281
查看详情 电子商务平台后台管理模板

大家有更好的附近商家+分页的算法吗?
补充 同时要求 能够根据城市 和 区域 进行搜索

回复内容:

<code>Shop表存储字段  Lat, Lng
</code>
登录后复制

现在使用方案为 通过 sql 语句进行距离的计算 之后 order by limit 进行分页 但在sql内进行计算,导致慢查询.

目前 有两种方案

<code>A方案 :  获取用户当前的经纬度 通过算法找到每条记录所在点的经纬度周围的一个大概范围,比方说正方形的四个点,然后使用mysql的空间计算

B方案 :通过 Geohash 算法 算出附近的商家 
</code>
登录后复制

前端通过接口获取数据进行分页,采用以上两种方案时,均为一次性拉取出附近商户的数据,之后进行距离的计算,根据距离的排序生成最终数组,此时数据分页 应该采用 根据数组的索引 计算偏移量进行分页的操作?

大家有更好的附近商家+分页的算法吗?
补充 同时要求 能够根据城市 和 区域 进行搜索

用关系型数据库的话,给经纬度加上索引。附近的算法可以从经纬度入手,以用户的经纬度(x,y)为基准,查询的范围为((x+/-),y(+/-)), 扩大搜索范围就是对x y的范围的加大。

使用ElasticSearch 或者 Solr之类支持空间的搜索引擎。

之前写过相关的Demo: Django ElasticSearch Ionic 打造 GIS 移动应用 —— 架构设计

相关标签:
php
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号