Как объяснить sphinx что рукав и рукавичка — разные слова?

Настраиваю поиск sphinx для интернет магазина. На запрос «рукавичка» находит и рукавички и все товары с упоминание рукав. При чем видимо в процессе индекса выделен корень «рукав» потому что даже при релевантной сортировки «рукавички» не все выдаются в начале. Как сделать чтоб по рукавам и рукавичкам искал отдельно?


Конфиг:


index productsindex

{

source = products

path = /var/lib/sphinxsearch/data/products

docinfo = extern

mlock = 0

morphology = stem_en, stem_ru

wordforms = /var/lib/sphinxsearch/data/wordforms.txt

min_stemming_len = 3

min_word_len = 3

charset_type = utf-8

charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F

expand_keywords = 1

min_prefix_len = 3

#min_infix_len = 3

index_exact_words = 1

prefix_fields = name

#infix_fields = name

enable_star = 1

html_strip = 1

}
  • Вопрос задан
  • 7308 просмотров
Решения вопроса 1
@zednight Автор вопроса
Запросил на форуме sphinx, порекомендовали использовать словарь словоформ в формате:
Рукавичка > Рукавич
Рукавички > Рукавич
В общем пришлось добавить склонение во всех падежах в единственном и множественном числах, по факту это: 7 строк
Вроде помогло.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
becks
@becks
Может быть вам сделать индекс не по стемме (у слов рукав и рукавичка стемма одинаковая ), а по лемме, подключить морфологический словарь? В новой версии, он уже поддерживается.
Ответ написан
XaosSintez
@XaosSintez
Вообще для этого есть параметр index_exact_words. Но как я вижу, Вы его уже включили.

Значит нужно разобраться именно с ranking'ом, чтобы выдавал более точное совпадение выше.
Попробуйте помудрить с ranking_mode
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы