在SOLR中edismax排名中的子查询得分和协调

时间:2013-04-21 01:07:41

标签: solr

我在solr 4.1中使用edismax排名。我有一个queryparser,它在给定单个查询字符串的情况下生成一些子查询。当我查看具体的排名细节时(通过添加“debugQuery = on”),我发现了以下内容:

1>看起来首先添加所有子查询的排名分数 2 - ;然后这个总得分和坐标因子相乘。看起来coord因子是有多少子查询匹配的比率。例如,如果查询变为3个子查询,并且如果只有1个被查询,则coord因子将为1/3。

我想知道1>我的观察是否正确。 2 - ;如果是这样,是否有办法改变这些行为,如下所示:

1>不要总结子查询的分数,只需取最大分数。 2 - ;忽略坐标因素。

如果当前的solr 4.1实现不支持,任何要更改或用作引用的源代码的指针都会很棒。

1 个答案:

答案 0 :(得分:3)

检查控制行为的参数: -

Tie Breaker -

  

值“0.0”使查询成为纯粹的“析取最大查询” -   只有最大得分子查询才会影响最终得分。一个   值“1.0”使查询成为纯粹的“析取和查询”   无论最大得分子查询是什么,最终得分都无关紧要   是子分数的总和。通常,低值(即:0.1)是   是有用的。

Coord -

  

在Solr 1.4和之前的版本中,如果你想要的话,你应该基本上设置mm = 0   等于q.op = OR,mm = 100%,如果你想要等效的   q.op = AND。在3.x和trunk中,mm的默认值由   q.op param(q.op = AND => mm = 100%; q.op = OR => mm = 0%)。请记住   默认运算符受schema.xml条目的影响。在旧版本的Solr中默认   值为100%(所有子句必须匹配)

删除mm因子以删除坐标计算并将平局设置为0以考虑得分的最大值。