Релевантность результатов поиска Lucene - PullRequest
0 голосов
/ 06 августа 2009

Я подписан на 3 документа в индексе Lucene.

  1. В качестве MBA вы будете играть неотъемлемую роль в реализации стратегии бизнеса и будете нести обязанности в соответствии с установленными законом требованиями, соблюдением требований, аудитом, включая банковские отношения, налогообложением, казначейством и управлением денежными средствами

  2. Как M.B.A., вы будете играть неотъемлемую роль в реализации стратегии бизнеса и будете нести обязанности по бухгалтерскому учету, соответствию, аудиту, включая банковские отношения, налоги, казначейство и управление денежными средствами

  3. Будучи магистром делового администрирования, вы будете играть неотъемлемую роль в реализации стратегии бизнеса и будете нести обязанности в соответствии с установленными законом требованиями, соблюдением требований, аудитом, включая банковские отношения, налогообложением, казначейством и управлением денежными средствами

Мой поисковый запрос: MBA, и запрос, который я ищу, выполняется в Lucene:

+((description:mba^3.0) (description:m.b.a.) (description:\"master business administration\"))

Я получаю результаты в следующей последовательности после сортировки результатов по убыванию:

Document # 3
Document # 2
Document # 1

Разве запись № 1 не должна появляться в верхней части результатов поиска, так как я увеличил ее, а также этот документ содержит точное слово MBA ??

Что мне здесь не хватает?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 06 августа 2009

Соответствующая строка запроса составляет около 10% содержимого документа № 3. но только крошечная доля № 1 и № 2.

Возможно, вам придется настроить бусты, чтобы отразить различную длину альтернативных строк запроса.

0 голосов
/ 07 августа 2009

Если вы используете Lucene's StandardAnalyzer, документы № 1 и № 2 фактически эквивалентны, и оба будут соответствовать термину «mba». Трудно догадаться, почему у # 3 самый высокий балл - возможно, потому что он соответствует нескольким терминам. Возможно, вы захотите рассмотреть обработку таких синонимов во время индексации.

Не думаю, что длина поля будет иметь большое значение, но то, что вы, вероятно, захотите сделать, это использовать IndexSearcher.Explain (), чтобы получить разбивку оценки - лучший способ отладить подобные проблемы.

...