проблема зенд люцена со словом "ипотека" - PullRequest
9 голосов
/ 21 декабря 2009

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

Слово «ипотека» правильно обозначено как «ипотека» Слово «залогодержатель» (возможно, неправильно) происходит от слова «ипотека»

Существует около 100 документов со словом «ипотека» Имеется 1 документ со словом "залогодержатель"

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

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

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

1 Ответ

1 голос
/ 22 декабря 2009

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

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

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

...