ここLuceneのスコアリングの式は次のとおりLuceneはマルチフィールドスコアをどのように計算しますか?
スコア(Q、D)= COORD(Q、D)・queryNorm(Q)・Σ(TF(D中のT)・IDF(T)2)t.getBoost(・・norm(t、d))
マルチフィールドスコアリングはどうですか?
スコアは直接合計されるか平均化されますか?
ここLuceneのスコアリングの式は次のとおりLuceneはマルチフィールドスコアをどのように計算しますか?
スコア(Q、D)= COORD(Q、D)・queryNorm(Q)・Σ(TF(D中のT)・IDF(T)2)t.getBoost(・・norm(t、d))
マルチフィールドスコアリングはどうですか?
スコアは直接合計されるか平均化されますか?
操作によって異なります。 OR(name:bill OR gender:male)のようにORを実行している場合は、2つのうち最大値をとります。あなたがANDをやっているなら、それは合計をします。
Similarityクラスの得点の詳細を読むことができます。この方程式では、Fieldが実際にFieldを意味するとき、Documentを参照してパラメータが参照されます。したがって、用語頻度は、文書内の指定フィールドの用語の頻度です。これにより、複数のフィールドのクエリが自動的に処理されます。
上記のKenEの答えは間違っています。 (式にはMAX演算子はありません)フィールド上の各クエリのスコアは最終スコアに加算されます。クエリ(name:bill OR gender:male)の場合、結果は(name:bill)と(gender:男性)のスコアの合計です。典型的には、これらの基準を両方満たす文書は、(合計のために)より高い得点となり、出てくる。
Shashikant Koreは、各フィールドのスコアが合計されていると言うのは間違いありません。しかし、これはqueryNorm
とcoord
の要因が寄与する前にのみ当てはまります。最終的な得点が足りなくなる可能性はありません。
各スコアは、クエリごとに計算され、したがって(name:bill)
、(gender:male)
、及び(name:bill OR gender:male)
のそれぞれに異なるさqueryNorm
係数が乗算されます。組み合わせクエリのqueryNorm
も、2つの単項クエリのqueryNorm
の合計にすぎません。したがって、各スコアをそのクエリのqueryNorm
係数で除算すると、スコアは合計されます。
因子:coord
も支払われる場合があります。デフォルトスコアラーはスコアに、一致した照会用語の割合を乗算します。したがって、すべての条件が一致するqueryNorm
(またはcoord
が無効)を考慮した上で、合計にのみ依存することができます。
explain
機能を使用してスコアを計算する方法を正確に確認できます。これは、debugQuery=true
パラメータでSolrで利用できます。 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)
これはlucene 5_3_0に基づいています – vahid
あなたの答えが間違っています。 Shashikant Koreはそれを正しく得た。 –