Lucene: установка минимально необходимого сходства при поиске - PullRequest
1 голос
/ 18 ноября 2010

У меня много проблем, связанных с фактором сходства Люсена. Я хочу, чтобы он применил коэффициент сходства, отличный от значения по умолчанию (которое согласно документации составляет 0,5), но, похоже, он не работает.

Когда я набираю запрос, который явно устанавливает требуемый коэффициент подобия, например [tinberland ~ 0.5] (обратите внимание, что я написал tiNberland с «N», в то время как правильный будет с «M»), это приносит много продукция производителя Timberland. Но когда я просто набираю [tinberland] (явно не определен коэффициент сходства) и пытаюсь установить сходство с помощью кода, это не работает (не возвращает результатов).

Код, который я написал, чтобы установить сходство, выглядит так:

multiFieldQueryParser.SetFuzzyMinSim(0.5F);

И я не изменил алгоритм подобия, поэтому он использует класс DefaultShoity.

Разве это не правильный или рекомендуемый способ применения сходства с помощью кода? Есть ли конкретный QueryParser для нечетких запросов?

Любая помощь высоко ценится. Заранее спасибо!

1 Ответ

0 голосов
/ 18 ноября 2010

То, что вы устанавливаете, - это минимальное сходство, поэтому, например, если кто-то ищет foo~.1, парсер изменит его на foo~.5.Это не говорит «превратить каждый запрос в нечеткий запрос».

Вы можете использовать MultiFieldQueryParser.getFuzzyQuery примерно так:

Query q = parser.getFuzzyQuery(field, term, minSimilarity);

, но это, конечно, потребует от васвызывая getFuzzyQuery для каждого поля.Я не знаю о классе "MultiFieldFuzzyQueryParser", но все, что он мог бы сделать, это просто объединить несколько этих вызовов getFuzzyQuery.

...