@kolossus

Почему Sphinx при поиске ищет не по запросу, а по его на части?

Добрый день!
Имеется достаточно большая база контрагентов, не всегда точно знаешь имя контрагента, которого надо найти.
Поэтому решили организовать поиск при помощи sphinxsearch-2.2.11_1
Ищем скажем водитель - находит и водители и водителей и т.п. Вроде все нормально.

Но в некоторых запросах происходит "что-то не то"
К примеру, ищем по запросу 'саяны' - помимо самого найденного саяны находит кучу всего, что начинается с 'са'.
select * from test1 WHERE MATCH('саяны');
Спрашиваем:
call keywords('саяны', 'test1', 1);
+------+------------+------------+------+------+
| qpos | tokenized  | normalized | docs | hits |
+------+------------+------------+------+------+
| 1    | саяны      | са         | 39   | 43   |
+------+------------+------------+------+------+

Получается, при поиске 'саяны' sphinx получается ищет по 'са'.
В результате находит в базе то, что нужно - несколько контрагентов с именем 'саяны' и кучу еще всяких других вроде ООО"Транспорттех" САО.
Что делать? Как получить правильные результаты поиска? Что не так с конфигом?
Конфиг sphinx
source src1
{
        type                    = mysql
        sql_host                = localhost
        sql_query_pre           = SET NAMES utf8
        sql_query_pre           = SET CHARACTER SET utf8
        sql_query               = SELECT id, name FROM contragent
}
index test1
{
        source                  = src1
        path                    = /var/db/sphinxsearch/data/test1
        docinfo                 = extern
        dict                    = keywords
        mlock                   = 0
        morphology              = stem_enru
        charset_table = 0..9, A..Z->a..z, _, a..z, \
            U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451
        min_word_len            = 3
        ignore_chars            = U+00AD
        min_infix_len           = 2
        html_strip              = 0
}


Спасибо!
  • Вопрос задан
  • 959 просмотров
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
Потому что вы включили искать минимум по двум буквам, посмотрите в моем профиле на Хабре статью про поиск сфинкса там подробно это разъяснено
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы