Как Lucene вычисляет оценку мультиполя? - PullRequest
0 голосов
/ 24 апреля 2009

Вот уравнение оценки Lucene:

оценка (q, d) = координата (q, d) · queryNorm (q) · ∑ (tf (t в d) · idf (t) 2 · t.getBoost () · норма (t, d))

А как насчет многополюсного подсчета очков?

Получается ли результат непосредственно суммируется или усредняется или ..?

Ответы [ 4 ]

3 голосов
/ 25 апреля 2009

Подробности о зачетах можно прочитать в Сходстве классе. В этом уравнении параметры ссылаются на документ, когда они фактически означают поле. Итак, Term Frequency - это частота термина в данном поле в документе. Это автоматически обрабатывает запросы по нескольким полям.

Ответ KenE выше неверен. (В уравнении нет оператора MAX.) Оценка для каждого запроса в поле суммируется с окончательной оценкой. Для запроса (имя: счет ИЛИ пол: мужчина) результатом является сумма баллов за (имя: счет) и (пол: мужчина). Как правило, документы, которые удовлетворяют обоим этим критериям, получат более высокую оценку (из-за суммы) и появятся.

0 голосов
/ 10 сентября 2015

Используя стандартное значение сходства lucene, я использовал логический запрос и получил следующую формулу: (извините, это в latex)

score(q, d) = \sum_{f \in fields} \sum_{t \in query} idf(t, f) queryNorm(query) \times idf(t, f) tf(t, d, f) fieldNorm(f)
0 голосов
/ 07 ноября 2012

Shashikant Kore правильно говорит, что баллы для каждого поля суммируются. Это, однако, справедливо только перед вкладом факторов queryNorm и coord, то есть окончательные оценки вряд ли будут суммироваться.

Каждая оценка умножается на коэффициент queryNorm, который рассчитывается для каждого запроса и, следовательно, отличается для каждого из (name:bill), (gender:male) и (name:bill OR gender:male). Также queryNorm для комбинированного запроса не является просто суммой queryNorm s для двух однократных запросов. Таким образом, результаты суммируются только в том случае, если вы поделите каждую оценку на коэффициент queryNorm для этого запроса.

Коэффициент coord также может оплачивать часть: оценщик по умолчанию умножает оценку на пропорцию условий запроса, которые были сопоставлены. Таким образом, вы можете рассчитывать на суммирование только после учета queryNorm, если все условия совпадают (или coord отключено).

Вы можете точно увидеть, как рассчитывается оценка, используя функциональность explain, доступную в Solr через параметр debugQuery=true.

0 голосов
/ 24 апреля 2009

Это зависит от операции. Если вы делаете ИЛИ, как в (имя: счет ИЛИ пол: мужчина), это займет максимум двух. Если вы делаете AND, это будет сумма.

...