yykpf 2015-09-06 06:47 采纳率: 0%
浏览 1740

sphinx的SetGeoAnchor实现范围查找

<?php
header('content-type:text/html;charset=utf-8');
//连接数据库
mysql_connect('localhost','root','');
mysql_query('set names utf8');
mysql_select_db('test');
$rs=mysql_query('select Lon,Lar from kh');
while($row=mysql_fetch_assoc($rs)){
$long = $row['Lar'];
$lat = $row['Lon'];
}
$long=(float)$long;
$lat=(float)$lat;
$radius = (float) 10000.0 * 1.61; //搜索10公里以内的地点
/****引入文件*****/
require('./sphinxapi.php');
//实例化
$sphinx=new SphinxClient();
$sphinx->SetArrayResult(true);
//设置匹配模式
$sphinx->SetMatchMode(SPH_MATCH_ANY);
//取多少个
$sphinx->SetLimits(0, 513);
//角度转换成弧度
$sphinx->SetGeoAnchor('latitude', 'longitude', (float) deg2rad($lat),(float) deg2rad($long));
// 按距离正向排序
$sphinx->SetSortMode(SPH_SORT_EXTENDED, '@geodist asc');
// 过滤掉大于10公里的地点
$sphinx->SetFilterFloatRange('@geodist', 0.0, $radius);
//链接服务器
$sphinx->SetServer('localhost',9312);
$keyword='店铺';
$ret=$sphinx->Query($keyword,'*');
echo '

';
var_dump($ret['matches']);
// 求出id
$id=array_keys($ret['matches']);
//取出最后的id
$lastid=mysql_query('select max(id) from sp');
$lastid=mysql_fetch_assoc($lastid);
//转换成字符串
$id= implode(',',$id)+implode($lastid);
//根据id求出具体的信息
$rs=mysql_query('select * from sp where id in('.$id.')');
while($row=mysql_fetch_assoc($rs)){
echo '
';
var_dump($row);
}
  • 写回答

1条回答 默认 最新

  • devmiao 2015-09-06 14:50
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题