Как установить более конкретные правила для запроса сфинкса? - PullRequest
0 голосов
/ 10 августа 2011

У меня есть база данных со списком фильмов и сериалов.Поиск, который я построил, использует Sphinx.

Я использую режим SPH_MATCH_ANY, потому что я хочу, чтобы, если человек ищет «x-men 2», он также находил записи о «x-men 1» и «x-men».3 ".

Моя проблема в том, что он также ищет записи с" 2 ", например," Автомобили 2 "или" Сверхъестественное время года 2 ".

Я хочу сказать, что неискать записи, в которых нет «x-men». В MYSQL я бы написал так:

MATCH (mname) AGAINST ('x-men') AND mname like '%x-men%' 

или что-то в этом роде.

В Sphinx я попробовал это:

$s->Query(x-men 2 "x-men",'test1');

Но он все еще искал записи с номером "2" в них ..

Так как мне это сделать?

Спасибо.

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Хорошо, проблема решена, парень с форума Sphinx дал мне такое решение:

$s->setMatchMode(SPH_MATCH_EXTENDED2);
$s->Query("(x-men | 2) x-men",test1);
$s->setRankingMode(SPH_RANK_ANY);

=)

0 голосов
/ 10 августа 2011

Нужно думать как компьютер ... для нас совершенно очевидно, что слово «икс-мужчины» более важно, чем «2», но для компьютера они оба равны.

Вы всегда можете указать sphinx индексировать «x-men 1», «x-men 2» и «x-men 3» к одному и тому же индексу, используя словоформы

x-men 1 > xmen
x-men 2 > xmen
x-men 3 > xmen

поэтому, если кто-то ищет "x-men 2", он увидит результаты для 3 фильмов. Или вы можете указать sphinx не индексировать отдельные числа или установить длину min для индексов .

Но тогда пользователи могут жаловаться на то, что они хотят видеть ТОЛЬКО информацию "x-men 2", а не другие фильмы.

По моему мнению, при настройке поисковой системы вам не нужно угадывать того, что пользователь хочет получить в результате, потому что разные пользователи будут ожидать разных результатов, но вы всегда должны давать ему инструменты для уточнить его поиск. Например, один человек может ожидать, что x-men 2 вернет все фильмы о людях икс, другой - что он вернет информацию, относящуюся только к людям икс-2, и (почему нет?) Кто-то ожидает, что он вернет все фильмы, содержащие слова "люди икс" и "2" ... вы не можете сделать всех счастливыми = P

Удачи

...