Должен ли я переиндексировать документы в Elasticsearch при смене Stemmer?

Я использую Elasticsearch для индексации своих документов (хотя я считаю, что мой вопрос может относиться и к любой другой поисковой системе, такой как Lucene или Solr).

Я использую стеммер Портера и список стоп-слов во время индексации. Я знаю, что должен применить тот же парадигматический блок и остановить удаление слов во время поиска, чтобы получить правильные результаты.

Мой вопрос: что, если я решу изменить свой стеммер или добавить/удалить пару слов в/из списка стоп-слов? Должен ли я переиндексировать все документы (или все текстовые поля), чтобы применить изменения? Или есть другой подход к этой ситуации?


person Soheil    schedule 08.10.2014    source источник


Ответы (1)


Да, если вам нужно существенно изменить анализатор, вы должны переиндексировать свои документы. Если вы этого не сделаете, изменения повлияют только на анализ запросов. Возможно, вам удастся избежать этого при замене на StopFilter, но не при замене стеммера. Переиндексация — это единственный способ применить новые правила анализа к проиндексированным данным, будь то переиндексация путем сброса всего массива и перестроения его с нуля или путем обновления документов.

Что касается других подходов, если вы не хотите переиндексировать, вы застряли, ограничивая свои изменения анализа временем запроса, что резко ограничивает то, что вы можете сделать (вы могли бы заставить работать SynonymFilter, но опять же, изменения в стеммере определенно вне).

person femtoRgon    schedule 08.10.2014