Я использую стеммер Портера для стемминга слов и здесь являюсь проблемой, с которой я сталкиваюсь:
Word "ипотека" правильно останавливается к "mortgag" Word "залогодержатель", (возможно неправильно), произошел для "закладывания"
Существует приблизительно 100 документов со словом "ипотека" существует 1 документ со словом "залогодержатель"
Когда я создаю индекс, не помещая "залогодержателя" ни в какие документы, все хорошо работает: поиск "ипотеки" или "ипотек" или "mortgag" возвращает все 100 документов.
Когда я создаю индекс, и один из документов содержит "залогодержателя", искание индекса для "ипотеки" только возвращает единый документ с "залогодержателем" (который был остановлен вниз для "закладывания"). Однако поиск "mortgag" или "ипотеки" возвращают все 100 документов.
Единственный логический вывод, который я могу сделать из этой проблемы, является lucene, сначала ищет предварительно остановленное слово, и если это не находит результатов, это продолжает искать остановленное слово. Таким образом, при поиске 'ипотеки', это сначала находит 'ипотеку', которая была остановлена от 'залогодержателя' и прекращает искать. Действительно ли это - корректное поведение, или действительно ли это - ошибка?
Для меня это звучит как жучок. Руководящий принцип Lucene search гласит: "Ищите, используя тот же анализатор, который вы использовали для индексации, если только у вас нет веских причин не делать этого". После анализа и поиска Люсьен должен вернуть совпадения по имеющимся у него поисковым терминам.
В вашем случае "ипотека" при индексации была преобразована в "ипотеку". Процесс поиска должен отражать это, а также преобразовывать "mortgage" в "mortgagegag", а затем находить совпадения для "mortgagegag" (что означает "mortgage").
Похоже, что во время поиска вы не останавливаете запрос, что приводит к ошибочным результатам. Если этот ответ неясен, пожалуйста, отредактируйте свой вопрос и добавьте несколько строк кода, описывающего, как вы создаете индекс и как вы его ищете
.