[转] Sphinx SetGeoAnchor 经纬度查找附近地点

标签: sphinx setgeoanchor 经纬度 | 发表时间:2015-08-02 16:28 | 作者:dsxwjhf
出处:http://www.iteye.com
原文地址 http://www.douban.com/group/topic/30286342

Sphinx 的 SetGeoAnchor方法,(LinkWith:http://sphinxsearch.com/docs/manual-0.9.9.html#api-func-setgeoanchor)
coreseek提供的中文翻译手册:
function SetGeoAnchor ( $attrlat, $attrlong, $lat, $long )
为地表距离计算设置锚点,并且允许使用它们。$attrlat 和$attrlong 是字符串,分别指定了对应经度和纬度的属性名称。$lat 和$long 是浮点值,
指定了锚点的经度和纬度值,以角度为单位。一旦设置了锚点,您就可以在您的过滤器和/或排序表达式中使用@geodist 特殊属性。Sphinx 将在每一次全文检索中计算给定经纬度与锚点之前的地表距离,并把此距离附加到匹配结果
上去。SetGeoAnchor 和索引属性数据中的经纬度值都是角度。而结果会以米为单位返回,因此地表距离 1000.0 代表 1 千米。一英里大约是 1609.344 米。

coreseek这部分翻译有个问题,原文说的是弧度,而coreseek翻译成了角度,这是个错误。

一般由GPS提供的经纬度格式(角度)如:longitude:111.177579, latitude:53.051679 ,转换成弧度,公式为 (角度*Pi)/180,

首先在做索引的时候 ,得将经纬度数据源转换成弧度。

SQL:select id, radians(longitude) as longitude, radians(latitude) as latitude from locations

PHP:
$long = (float)$_GET['longitude'];
$lat = (float)$_GET['latitude'];
$radius = (float) 10000.0 * 1.61; //搜索10公里以内的地点

$cl = new SphinxClient();
$cl->SetServer("localhost", 3312);
$cl->SetMatchMode(SPH_MATCH_ANY);
$cl->SetArrayResult(true);
$cl->SetLimits(0, 100);
$cl->SetGeoAnchor('latitude', 'longitude', (float) deg2rad($long), (float) deg2rad($lat)); //角度转换成弧度

$cl->SetSortMode(SPH_SORT_EXTENDED, '@geodist asc'); // 按距离正向排序
$cl->SetFilterFloatRange('@geodist', 0.0, $radius); // 过滤掉大于10公里的地点

$result = $cl->Query('', '*');

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [sphinx setgeoanchor 经纬度] 推荐:

[转] Sphinx SetGeoAnchor 经纬度查找附近地点

- - 互联网 - ITeye博客
原文地址 http://www.douban.com/group/topic/30286342. Sphinx 的 SetGeoAnchor方法,(LinkWith:http://sphinxsearch.com/docs/manual-0.9.9.html#api-func-setgeoanchor).

用Sphinx写书

- Mao.. - HYRY Blog
写技术书是一件十分费时费力的事情,作者不但需要编写有趣的内容,还需要用标准且美观大方的格式呈现内容. 在编写《Python科学计算》一书的过程中,我尝试使用Sphinx、Leo、MiKTeX等软件,拼凑出了一套适合编写技术书籍和文档的编写环境. 这本书是关于这个编写环境的一些介绍. 在线阅读版: http://hyry.dip.jp/sphinxbook.

淺談 reStructuredText 與 Sphinx

- khsing - Blog.XDite.net
但因為最近非常忙碌,所以在這裡只能淺談,請見諒. 「 第一次學 Rails 就上手 」2011/8 月的版本包含了 PDF 版本以及 EPUB 版. 這次的版本不是改寫,而是「重新排版」. 這份書的初稿是用 Markdown 謄寫手排. 而完稿則是用 Mac 上的軟體「Pages」手排. (你看,出書門檻不高吧 XD).

文档与笔记利器reStructuredText和Sphinx

- Wick - 七星庐
关于制作文档和笔记这种事,我已经纠结了很久,网上解决方案也一大推,我试过几样,ScrapBook和Zotero,编辑不太方便,同步麻烦. Google Note过于格式简单,现在也不更新了,Google Docs又有点杀鸡用牛刀. 还有传得很神奇的Evernote跟Onenote,我压根没兴趣去用.

文档与笔记利器 reStructuredText 和 Sphinx

- timebug - Wow! Ubuntu
本文转载自七星庐 [ 原文:文档与笔记利器reStructuredText和Sphinx / 作者 muzuiget ]. 关于制作文档和笔记这种事,我已经纠结了很久,网上解决方案也一大推,我试过几样,ScrapBook 和 Zotero,编辑不太方便,同步麻烦. Google Note 过于格式简单,现在也不更新了,Google Docs又有点杀鸡用牛刀.

sphinx分布式索引简介

- - haohtml's blog
sphinx分布式索引原理:. 当searchd收到一个对分布式索引的查询时,它做如下操作:. (在远程代理执行搜索的同时)对本地索引进行查询. 在应用程序看来,普通索引和分布式索引完全没有区别. 任一个searchd实例可以同时做为主控端(master,对搜索结果做聚合)和从属端(只做本地. 集群中的每台机器都可以做为主控端来搜索整个集群,搜索请求可以在主控端之间获.

使用 Sphinx 更好地进行 MySQL 搜索

- - OurMySQL
MySQL 是一个出色的综合性数据库,但是,对于需要进行大量搜索的应用程序,考虑采用具体的搜索实用工具可能会更好一些. 本文章将 Sphinx(一个著名的全文本搜索包)视为 MySQL 的替代品,用它来进行搜索,提高非全文本搜索的速度. 本文章研究此更改中涉及的权衡方法和说明,演示一些具体测试,并考虑以通用方式使用 Sphinx 所需的内容.

开源搜索引擎评估:lucene sphinx elasticsearch

- - 鲁塔弗的博客
lucene系,java开发,包括 solr和 elasticsearch. sphinx,c++开发,简单高性能. 搜索引擎程序这个名称不妥当,严格说来应该叫做 索引程序(indexing program),早期主要用来做中文全文搜索,但是随着互联网的深入普及,各家网站规模越来越大,索引程序在 优化网站架构上发挥了更大的作用: 替代mysql数据库 内置的索引.

主流全文索引工具的比较( Lucene, Sphinx, solr, elastic search)

- - 企业架构 - ITeye博客
前几天的调研(  Rails3下的 full text search (全文本搜索, 全文匹配. ) ), 我发现了两个不错的候选: . lucene  (solr, elasticsearch 都是基于它) . 把看到的有价值的文章记录在这里: . 回答1.  Result relevance ranking is the default.

Google未公开API:转MAC地址为经纬度

- Hermes - 酷壳 - CoolShell.cn
这里有一个POC(Proof of Concept)可以通过你Web浏览器后面的路由器XSS攻击得到一个准确的GPS坐标. 注意:路由器和Web浏览器以及IP地址并不包含任和地理信息. 其方法是使用了一个Google未公开的API. 访问一个网页,这个网页隐藏了一个基于你WiFi路由器的XSS( 参见: XSS  Verizon FiOS router).