SetGeoAnchor в SphinxQL - PullRequest
       3

SetGeoAnchor в SphinxQL

2 голосов
/ 28 февраля 2012

Я пытаюсь реализовать полнотекстовый поиск, когда попадания возвращаются в зависимости от местоположения пользователя. Мне удалось сделать это с помощью 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 ..." );

1 Ответ

2 голосов
/ 28 февраля 2012

Во-первых, можно сделать несколько индексов в запросе

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
...