我想通过将多个字段分数的加权分数相加来计算每个文档的最终分数,而不是像edisMAx查询分析器那样获得MAX。
所以,如果我有三个字段,标题和描述,我希望我的最终得分是这样的:
最终分数= w1 * title_field_score +(1-w1)* description_field_score +(1-w1 -w2)* description_field_score
其中w1,w2可以是0到1之间的值。
没有任何相似性的默认相似度给出ranking。这使用以下搜索处理程序:
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="df">detail_page_text</str>
<!-- Query settings -->
<str name="defType">edismax</str>
<str name="qf">
job_title description detail_page_text
</str>
现在通过使用如下所示的平局,似乎我们得到了理想的ranking。
<str name="tie">1.0</str>
所以我的问题是,如果使用tie参数是基于所有字段equaly(或使用额外权重)实现weigthed排名分数的正确方法。
任何提示都会非常感激! 干杯
答案 0 :(得分:3)
Dismax tie是您应该用于加权评分的参数。
tie = 1.0 - &gt;所有个人得分的总和。
19.07% 0.69268036 (MATCH) **max plus 1.0 times** others of:
1.96% 0.07105611 detail_page_text:senior
4.16% 0.15101658 description:senior
12.96% 0.4706077 job_title:senior
tie = 0.0 - &gt;个人得分的最大值。
17.83% 0.7043001 (MATCH) **max** of:
- 0.028197879 detail_page_text:senior
- 0.04566047 description:senior
- 17.83% 0.7043001 job_title:senior
答案 1 :(得分:1)