通过坐标过滤进行 Sphinx 搜索

Sphinx search with filtering by coordinates

我有这个查询:

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;

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

根据你另一个问题中的代码,会做类似

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

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

...

sql_attr_float = latitude
sql_attr_float = longitude

将保持不变。

尝试

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

(注意 {in=deg})

它 returns 接近您期望的数字:

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)