我正在尝试实现全文搜索,其中根据用户位置返回匹配。我设法使用API,现在我想使用SphinxQL做同样的事情(因为我需要组合来自几个Sphinx索引的数据):
#!/usr/bin/perl
use Sphinx::Search;
my $sph = Sphinx::Search->new();
$sph->SetMatchMode(SPH_MATCH_EXTENDED);
$sph->SetSortMode(SPH_SORT_EXTENDED, '@geodist ASC');
$sph->SetGeoAnchor('lat', 'lng', 0.5894, -1.4724);
$sph->SetFilterFloatRange('@geodist', 0, 100000);
my $res = $sph->Query( "... SOME QUERY ..." );
答案 0 :(得分:2)
首先可以在Query
中做多个索引my $res = $sph->Query( "... SOME QUERY ...", 'index1, index2');
否则你只需要使用GEODIST函数......
SELECT *,GEODIST(lat, lng, 0.5894, -1.4724) AS geodist FROM ... WHERE MATCH("... SOME QUERY ...") AND geodist < 100000 ORDER BY geodist ASC