Добрый день!
Имеется достаточно большая база контрагентов, не всегда точно знаешь имя контрагента, которого надо найти.
Поэтому решили организовать поиск при помощи sphinxsearch-2.2.11_1
Ищем скажем
водитель - находит и
водители и
водителей и т.п. Вроде все нормально.
Но в некоторых запросах происходит "что-то не то"
К примеру, ищем по запросу 'саяны' - помимо самого найденного саяны находит кучу всего, что начинается с 'са'.
select * from test1 WHERE MATCH('саяны');
Спрашиваем:
call keywords('саяны', 'test1', 1);
+------+------------+------------+------+------+
| qpos | tokenized | normalized | docs | hits |
+------+------------+------------+------+------+
| 1 | саяны | са | 39 | 43 |
+------+------------+------------+------+------+
Получается, при поиске 'саяны' sphinx получается ищет по 'са'.
В результате находит в базе то, что нужно - несколько контрагентов с именем 'саяны' и кучу еще всяких других вроде ООО"Транспорттех"
САО.
Что делать? Как получить правильные результаты поиска? Что не так с конфигом?
Конфиг sphinxsource 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
}
Спасибо!