Возможно ли, чтобы двухбуквенный поисковый термин совпадал с трехбуквенным индексированным термином, если расстояние редактирования = 2 между ними - PullRequest
2 голосов
/ 24 октября 2019

Я пытаюсь написать модульные тесты для нечеткого соответствия в моем проекте. Тем не менее, у меня есть один тест, который не проходит, хотя он не должен в соответствии с документацией Lucene. Поисковый термин имеет длину 2 символа, индексированный термин имеет длину 3 символа, а расстояние редактирования равно 2. Согласно документации lucene, этот поисковый термин не должен совпадать с этим индексированным термином, поскольку расстояние редактирования должно быть> длиной наименьшего соответствующего термина.

Поисковый термин "je", индексированный термин "jon". Согласно расстоянию Дамаро Левенштейна, которое используется Lucene, расстояние редактирования здесь равно 2. Согласно официальной документации Lucene по FuzzyQuery (https://lucene.apache.org/core/8_1_0/core/org/apache/lucene/search/FuzzyQuery.html), расстояние редактирования должно быть больше, чем длина самого короткого термина (поисковый запрос илииндексируемый термин). Поэтому по этой логике мой поисковый запрос «je» не должен совпадать с «jon».

В качестве фона я использую логический запрос с prefixQuery и fuzzyQuery. Частичное совпадение включено с помощьюprefixQuery и нечеткое сопоставление с fuzzyQuery. Я не храню ни грамматических выражений, ни слова-основы. Я использую простой стандартный анализатор для индексации и поиска.

Наконец, я распечатал оценку объяснения для этого результата поиска иПохоже, что объяснение подтвердило мою обеспокоенность тем, что это может быть ошибкой в ​​Lucene. Выход для метода объяснения:

"0.0 = сумма: 0.0 = ConstantScore (имя: jon) ^ 0.0"

Это показывает, что рассчитанный показатель релевантности равен 0, но результат совпадаетредактировал и возвращал.

Есть ли какие-либо проблемы с неправильной документацией Lucene или ошибки в программном обеспечении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...