通过坐标过滤进行 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)
我有这个查询:
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)