这是Lucene得分方程式:
得分(q,d)=坐标(q,d)·queryNorm(q)·Σ(tf(t in d)·idf(t)2·t.getBoost()·norm(t,d))
多场得分怎么样?
分数是直接求和还是平均或......?
答案 0 :(得分:3)
您可以在Similarity课程中阅读评分的详细信息。在这个等式中,当参数实际上是指Field时参考Document。因此,术语频率是文档中给定字段中术语的频率。这会自动处理多个字段的查询。
KenE上面的回答是不正确的。 (等式中没有MAX运算符。)字段上每个查询的分数加起来为最终分数。对于查询(名称:账单或性别:男性),结果是(名称:账单)和(性别:男性)的得分总和。通常,满足这两个标准的文件将得分更高(由于总和)并且出现。
答案 1 :(得分:0)
这取决于操作。如果您正在进行OR(名称:bill或性别:男性),则需要两者中的最大值。如果你正在做一个AND,它会做一笔钱。
答案 2 :(得分:0)
Shashikant Kore说得对,每个领域的得分都是相加的。但是,这仅在queryNorm
和coord
因素的贡献之前才有效,这意味着最终得分不会加起来。
每个分数乘以queryNorm
因子,该因子是针对每个查询计算的,因此每个(name:bill)
,(gender:male)
和(name:bill OR gender:male)
都有所不同。合并查询的queryNorm
也不仅仅是两个单项查询的queryNorm
之和。因此,如果您将每个分数除以该查询的queryNorm
因子,则分数仅相加。
coord
因素也可能支付一部分:默认记分员将得分乘以匹配的查询字词的比例。因此,您只能在考虑所有字词匹配的queryNorm
后才能依赖求和(或coord
被禁用)。
您可以使用explain
功能确切了解分数的计算方式,Solr通过debugQuery=true
参数提供该功能。