2009-04-24 65 views
0

這裏是Lucene得分方程:Lucene如何計算多場得分?

得分(q,d)= coord(q,d)·queryNorm(q)·Σ(tf(t in d)·idf(t)2·t.getBoost() ·norm(t,d))

多場得分怎麼樣?

是否將得分直接相加或平均或..?

回答

0

這取決於操作。如果您在(名稱:賬單或性別:男性)中執行OR,則需要兩個中的最大值。如果你正在做一個AND,它會做一筆總和。

+0

你的答案不正確。 Shashikant Kore說得對。 – 2012-09-28 15:37:18

3

您可以閱讀Similarity課程中的得分細節。在這個等式中,當它們實際上表示場時,這些參數參照文檔來引用。所以,術語頻率是文檔中給定字段中術語的頻率。這會自動處理多個字段上的查詢。

KenE上面的答案不正確。 (等式中沒有MAX運算符。)場上每個查詢的分數合計爲最終分數。對於查詢(名稱:賬單或性別:男性),結果是(姓名:賬單)和(性別:男性)的總分。通常情況下,滿足這兩個標準的文件將得分較高(由於總和)並提出。

0

Shashikant Kore正確地說每個領域的得分是相加的。然而,這只是在queryNormcoord因素的貢獻之前纔是真實的,這意味着最終得分不可能加起來。

每個分數由queryNorm因子,其被每個查詢計算,並因此不同的每(name:bill)(gender:male),並(name:bill OR gender:male)相乘。組合查詢的queryNorm也不僅僅是兩個單項查詢的queryNorm之和。因此,如果您將每個分數除以該查詢的queryNorm因子,則分數僅爲總和。

coord因素也可能支付一部分:默認分數器將分數乘以匹配的查詢條件的比例。因此,只有在所有條件匹配(或禁用coord)的queryNorm之後才能依靠求和。

您可以使用Solr的debugQuery=true參數中提供的explain功能準確查看分數的計算方式。

0

使用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

這是基於lucene 5_3_0 – vahid 2015-09-10 18:14:47