Добрый день.
Мы хотим начать использовать ElasticSearch для поиска на нашем сайте.
Сейчас используется Sphinx.
Но сразу столкнулись с проблемой, при поиске слова "лосось", выводится:
"лосьон"
"лось"
"лос"
Мы попробовали подключить hunspell. Но индексация наших документов идет очень медленно. Мы индексируем контент файлов до 100 мб.
Если анализатором "russian" мы загружали по 1 000 000 за 2 часа, то с hunspell, всего навсего 10 000 за 2 часа.
Да, действительно замедление происходит из-за hunspell. Дело в том, что встроенный анализатор русского языка алгоритмический, то есть он работает по небольшому набору правил которые он применяет очень быстро. К сожалению, правила эти очень простые и вызывают проблемы (как с вашим лососем). Фильтр hunspell использует словарь русского языка, поэтому производит хорошие результаты, но ему надо для этого больше ресурсов.
Если проблематичных слов не много, то я думаю, их можно исключить из стемминга c помощью фильтра keyword marker и обработать в ручную с помощью синонимов. Если таких слов слишком много - то нужен более мощный, но медленный стеммер.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.