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

9

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

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

Существует около 100 документов со словом «залог», Существует 1 документ со словом «залогодержатель»

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

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

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

задан Mike Chimirev 21.12.2009 в 20:18
источник

1 ответ

1

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

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

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

    
ответ дан Yuval F 22.12.2009 в 10:26