zend lucene проблема со словом ипотека

Я использую Porter Stemmer, чтобы определить слова, и вот проблема, с которой я столкнулся:

Слово «ипотека» правильно образовано от «ипотека» Слово «ипотека» (возможно, неправильно) образовано от «ипотека».

Около 100 документов со словом "ипотека" 1 документ со словом "залогодержатель"

Когда я строю индекс, не помещая «ипотеку» ни в какие документы, все работает нормально: поиск «ипотеки», «ипотеки» или «ипотеки» возвращает все 100 документов.

Когда я создаю индекс и один из документов содержит «ипотечный кредит», поиск в индексе по «ипотечному кредиту» возвращает только один документ с «ипотечным кредитом» (который был сокращен до «ипотечного кредита»). Однако поиск по словам «ипотека» или «ипотека» возвращает все 100 документов.

Единственный логический вывод, который я могу сделать из этой проблемы, заключается в том, что lucene сначала ищет слово с основой, и если он не находит никаких результатов, он продолжает поиск слова с основой. Таким образом, при поиске «ипотека» он сначала находит «ипотеку», которая произошла от «залогодержателя», и прекращает поиск. Это правильное поведение или это ошибка?


person Mike Chimirev    schedule 21.12.2009    source источник


Ответы (1)


Это звучит как ошибка для меня. Руководящий принцип поиска Lucene гласит: «Выполняйте поиск с использованием того же анализатора, который вы использовали для индексации, если у вас нет действительно веской причины не делать этого». После анализа и определения корней Lucene должна возвращать совпадения по имеющимся у нее условиям поиска.

В вашем случае "ипотека" при индексации трансформировалась в "залог". Процесс поиска должен отражать это, а также преобразовывать «ипотеку» в «ипотеку», а затем находить совпадения для «ипотеки» (которые представляют «ипотеку»).

Создается впечатление, что при поиске вы не останавливаете запрос, что приводит к ошибочным результатам. Если этот ответ неясен, отредактируйте свой вопрос и добавьте несколько строк кода, описывающих, как вы создаете индекс и как вы его ищете.

person Yuval F    schedule 22.12.2009