我们正在运行SOLR 4.3.1,我有一个关于控制SOLR如何评分某些文档的问题。
在某些情况下,我们索引了质量“差”的文档 - 主体(在这种情况下为描述字段)可能只有3或4个字。其他文件可能有更好的描述。执行搜索时会出现问题,并且在“好”(较长)和“较差”(较短)文档中都可以找到搜索到的术语。
SOLR似乎在更短的文档中对匹配得分更高,这是有道理的,因为搜索的术语可能只有3或4个单词中的1个,因此它比具有更长描述的文档的百分比更高,其中仅有可以在100个单词中找到1或2个匹配项(例如)。
是否有可能以某种方式惩罚或减少真正短文件的分数?我知道有些非常简短的文件是可以的,但作为一般规则,在我们的案例中,真正的短文件通常是“质量差”。
建议?
我们正在使用edismax搜索。
谢谢,
比尔
答案 0 :(得分:0)
BM25相似性允许您调整文档评分中长度规范化的影响。默认情况下,正如您所观察到的那样,较短的字段内容超过了具有相同数量的字词匹配的较长字段内容。
您听起来想要中和或可能反转此长度规范化过程,以便所有长度的字段内容被视为等效且具有相同数量的术语匹配。
两个调整参数是:
k1
控制术语频率的饱和点(当您希望重复术语对得分产生更大/更小的影响时),
b
(您想要的那个)控制内容长度对匹配得分的影响。
如果您想深入了解,请仔细阅读BM25:http://opensourceconnections.com/blog/2015/10/16/bm25-the-next-generation-of-lucene-relevation/
要实现此功能,您需要全局或在您的描述字段的字段类型定义中嵌套BM25Similarity到您的SOLR schema.xml
(建议,因为您可能不希望所有领域都采用这种治疗方法。)
<similarity class="solr.BM25SimilarityFactory">
<str name="k1">1.2</str>
<str name="b">0.75</str>
</similarity>
(显示默认值)
如果你将b
降低到0.0
,你将有效地否定长度标准化的影响,这意味着在同一个字段中每个匹配同一个查询字词的两个文档总是得分相等(不管字段长度)此字段是考虑评分的唯一因素。
您需要重新加载配置并重新索引文档才能使此更改生效。
您还可以尝试使用否定b
(-0.75
可能吗?),因为这假设应该可以奖励更长的文档,但我还没有在当前的实现中验证这一点,所以请如果您确实以您需要的方式工作,则回复帖子。