Задать вопрос
@andrei2019

Как настроить стемминг в Sphinx?

Я использую Sphinx 3.0.3. Cоздал простой тестовый файл:
Белая корова. Белыми коровами. Белой коровой.
Вопрос такой: Почему Sphinx находит эти фразы по слову "корове" (отсутствующему в тексте), но не по словам "коровка" или "коровушка"? Получается, что используется не стемминг (обрезание до коров), а словарь, в котором нет коровок и коровушек?
Конфиг пока такой:

morphology = stem_enru
min_word_len = 2
index_exact_words = 1
expand_keywords = 1
min_infix_len = 3
min_prefix_len = 3
#enable_star = 1 #removed
#min_word_len = 1  #removed
#dict = keywords #removed


Можно ли настроить конфиг, чтобы выдавались эти фразы по словам "коровка" или "коровушка"?
Мне конкретно коровушки сейчас не нужны, я просто хочу понять, как настраивать или знать ограничения.

5b94d88d2f606770244523.jpeg
  • Вопрос задан
  • 297 просмотров
Подписаться 2 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
opium
@opium
Просто люблю качественно работать
Стемминг обрезает окончания, вам надо пройти другим путем, найдите на Хабре в моем профиле статью про сфинкс там рассказывается вариант для вашего случая как раз
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Здесь мой готовый алгоритм (на PHP) по нечёткому поиску цепочек слов с произвольным началом и окончанием слов, включая автоматическое исправление похожего начертания символов на нужный язык.

Что ищем: протектор зимней шины
Где ищем: Одним из основных элементов реnpoтeктушкатоpатора зимних шин являются ламели.
Результат: Найдено с 5-го слова: [реnpoтeктушкатоpатора]

PS: Кстати, вот ещё похожее на Сфинкс: stumper.ru (видимо недавно сделали)

Вариант 2: Вырезаете все суффиксы из поискового запроса через regex и проблема решена:
-щик, -льщик
-анин, -янин
-ница, -тель
-льник
-ница
-ость, -есть
-ота, -ета
-ецо, -ице
-изна
-ство
-отня, -овня
-ство, -ество
-ина, -инка
-ёнок, -онок
-очка, -ечка, -ичка
-енька, -онька
-ушка, -юшка
-ышко
-ишко, -ишка
-ёнка, -онка
-инка, -енка
-ище, -ища
-ушк-, -юшк-, -ышк-
-ёнка, -онка, -ёнок, -онок, -юнок, -унок
-енька, -онька, -анька
Ответ написан
Ваш ответ на вопрос

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

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