通过坐标过滤的Sphinx搜索

时间:2018-04-04 12:54:41

标签: sphinx

我有这个问题:

select id, post_category_name , title, description,WEIGHT(), 
  geodist(50.95, 24.69, latitude, longitude) dist 
from serv1 where match('@(title,description) searchText ) and dist < 2000000000000;
我的数据库帖子中的

latitude: 50.85longitude: 24.69 结果我的距离为893641,但实际距离为11119.49米。 我也尝试将输入坐标转换为弧度,但仍然没有正确的距离。 我做错了什么?先感谢您。

2 个答案:

答案 0 :(得分:0)

根据您的其他一个问题中的代码,会执行类似

的操作
sql_query = select  p.id,  ... , \
         RADIANS(l.Latitude) as latitude, RADIANS(l.Longitude) as longitude FROM ...

使用MySQL函数将存储的degreee值转换为属性的radions。

......

sql_attr_float = latitude
sql_attr_float = longitude

会保持不变。

答案 1 :(得分:0)

尝试

geodist(50.95, 24.69, latitude, longitude, {in=deg}) dist

(注意{in = deg})

它返回的数字接近您预期的数字:

mysql> select geodist(50.95, 24.69, 50.85, 24.69, {in=deg});
+-----------------------------------------------+
| geodist(50.95, 24.69, 50.85, 24.69, {in=deg}) |
+-----------------------------------------------+
| 11124.928711                                  |
+-----------------------------------------------+
1 row in set (0.00 sec)