Индексация с использованием Hunspell работает медленно

Добрый день.
Мы хотим начать использовать ElasticSearch для поиска на нашем сайте.
Сейчас используется Sphinx.
Но сразу столкнулись с проблемой, при поиске слова "лосось", выводится:
"лосьон"
"лось"
"лос"

Мы попробовали подключить hunspell. Но индексация наших документов идет очень медленно. Мы индексируем контент файлов до 100 мб.

Если анализатором "russian" мы загружали по 1 000 000 за 2 часа, то с hunspell, всего навсего 10 000 за 2 часа.

В чем может проблема? Что можно сделать?

Вы не могли бы запустить hot_threads в время индексации раз 5 и прислать результат сюда?

Приветствую!
Запустил индексацию в Elasticsearch с использованием анализатора hunspell
(Словари брал отсюда:
https://code.google.com/archive/p/hunspell-ru/
)

Собрал cстатистику по потокам (hot_threads) - файл es_hot_threads.txt
Ссылка на google disk:

Да, действительно замедление происходит из-за hunspell. Дело в том, что встроенный анализатор русского языка алгоритмический, то есть он работает по небольшому набору правил которые он применяет очень быстро. К сожалению, правила эти очень простые и вызывают проблемы (как с вашим лососем). Фильтр hunspell использует словарь русского языка, поэтому производит хорошие результаты, но ему надо для этого больше ресурсов.

Если проблематичных слов не много, то я думаю, их можно исключить из стемминга c помощью фильтра keyword marker и обработать в ручную с помощью синонимов. Если таких слов слишком много - то нужен более мощный, но медленный стеммер.

Спасибо, будем экспериментировать.
Пока остановились на использование light_russian, он менее агрессивно отсекает окончания слов.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.