Как я могу заставить Сфинкса игнорировать некоторых персонажей? - PullRequest
1 голос
/ 20 мая 2011

Я делаю сайт PHP с бэкэндом MySQL и Sphinx в качестве поисковой системы. Скажем, у меня есть элемент с дизайнером «Ray-Ban», и мне нужно получить его в результате, когда пользователь вводит «ray ban» или «rayban». Должен ли быть где-то список исключений?

Ответы [ 3 ]

3 голосов
/ 27 мая 2011

Стандартный способ сделать это - опция charset_table.charset_table определяет символы, которые нужно только токенизировать,

, т.е. с этой charset_table

index YOUR_INDEX_NAME
{
charset_table =  0..9, A..Z->a..z, _, a..z

такой текст

My best fiend is Hoo-foo but not Pe_ter.!!! That's all.

анализируется как эти токены

my best friend is hoo foo but not pe_ter that s all
1 голос
/ 19 декабря 2011

Начиная с версии 0.9.8, для индекса доступен параметр списка исключений с именем ignore_chars.

например.

index YOUR_INDEX {
        charset_type = utf-8
        ignore_chars = -

Более подробная информация доступна на сайте Sphinx: http://sphinxsearch.com/docs/manual-0.9.8.html#conf-ignore-chars

Примечание: они показывают использование U + AD для удаления мягких дефисов в их примере. По какой-то причине это не сработало для меня, но пример, который я привел выше, работал нормально.

1 голос
/ 23 мая 2011

Ваша лучшая ставка, вероятно, файл исключений - хотя это означает, что вам нужно знать каждый случай, когда вы хотите, чтобы два разных слова / фразы рассматривались одинаково.

...