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 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧