3

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

1> 看起来所有子查询的排名分数是先相加的 2> 然后是这个总分和坐标因子的乘积。看起来坐标因子是匹配子查询的比率。例如,如果一个查询变成了 3 个子查询,并且只有其中 1 个被命中,那么坐标因子将是 1/3。

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

1> 不用对子查询的分数求和,只取最大分数。2> 忽略坐标因子。

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

4

1 回答 1

3

检查控制行为的参数:-

决胜局-

“0.0”的值使查询成为纯粹的“析取最大查询”——只有最大得分的子查询对最终得分有贡献。“1.0”的值使查询成为纯粹的“析取和查询”,其中最大得分子查询无关紧要,最终得分是子得分的总和。通常较低的值(即:0.1)是有用的。

坐标-

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

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

于 2013-04-21T18:11:46.737 回答