Получение смешанных результатов при попытке расчета коэффициента Жакара в Lucene - PullRequest
0 голосов
/ 04 марта 2012

Я пытаюсь получить оценку на основе жаккарды с помощью Lucene. Мне удалось получить количество терминов в каждом документе, и мне нужно только найти количество терминов в моем запросе, найденных в каждом документе. При поиске Javadocs Люсена я наткнулся на

score.freq()

этот метод согласно Javadoc

Возвращает количество совпадений для текущего документа. Это возвращает float (не int), потому что SloppyPhraseScorer обесценивает свою частоту в зависимости от того, насколько «неряшливым» был матч.

Я тестирую его с очень простым документом, который я создал, который имеет следующий

кошка кошка кошка собака птица змея

Когда мой запрос: кошка, собака

я получаю Score.freq (), равный 2 (что является ожидаемым)

Когда мой запрос: кошка

я получаю очки.freq (), равные 3

Кто-нибудь знает, почему это происходит? Протестировал его и с большими запросами, и я получил правильные результаты. Также, когда мой запрос был собака (который имеет частоту 1 в документе) Я получил ожидаемый результат score.freq (), равный 1

Заранее спасибо за любой ответ!

1 Ответ

1 голос
/ 07 марта 2012

Scorer.freq () - экспертный API, результат которого зависит от рассматриваемого оценщика.

Различия, которые вы видите, заключаются в том, что freq () для логического оценщика представляет число совпадений (например, логические выражения), что соответствует, тогда как для оценщика терминов это число вхождений в документе для этого термина.

Таким образом, вам нужно собрать freq () из правильных оценщиков (например, логического оценщика или его листьев) в зависимости отна котором вам нужно.В выпусках 3.x это API для посетителей, но в выпусках 4.x вы можете перемещаться по иерархии счетчиков с помощью getChildren ().Обычно это то, что вы делаете в своем Collector.setNextReaderMethod, сохраняя ссылки только на тех бомбардировщиков, о которых вы заботитесь, чтобы ваш сборщик () был очень быстрым.

ПРИМЕЧАНИЕ.что эта функция очень новая и продвинутая и имеет некоторые ошибки.В некоторых случаях доступны исправления, но просто не было времени написать хорошие тесты: (

https://issues.apache.org/jira/browse/LUCENE-3505

https://issues.apache.org/jira/browse/LUCENE-2686

...