Я использую Porter Stemmer, чтобы определить слова, и вот проблема, с которой я столкнулся:
Слово «ипотека» правильно образовано от «ипотека» Слово «ипотека» (возможно, неправильно) образовано от «ипотека».
Около 100 документов со словом "ипотека" 1 документ со словом "залогодержатель"
Когда я строю индекс, не помещая «ипотеку» ни в какие документы, все работает нормально: поиск «ипотеки», «ипотеки» или «ипотеки» возвращает все 100 документов.
Когда я создаю индекс и один из документов содержит «ипотечный кредит», поиск в индексе по «ипотечному кредиту» возвращает только один документ с «ипотечным кредитом» (который был сокращен до «ипотечного кредита»). Однако поиск по словам «ипотека» или «ипотека» возвращает все 100 документов.
Единственный логический вывод, который я могу сделать из этой проблемы, заключается в том, что lucene сначала ищет слово с основой, и если он не находит никаких результатов, он продолжает поиск слова с основой. Таким образом, при поиске «ипотека» он сначала находит «ипотеку», которая произошла от «залогодержателя», и прекращает поиск. Это правильное поведение или это ошибка?