我对默认Solr评分算法有疑问,该算法特定于我的收藏范围。在我的域中,包含所有查询词或大多数查询词的文档比仅包含几个词的文档具有更大的相关性。我想提高文档的分数,以便匹配的术语越多,分数越高。我知道solr已经通过将分数乘以协调因子来增强此类文档。但是,协调因素对我而言并不足够重要,我希望将其提高到一定程度。我也熟悉ExtendedDismax解析器的Minimum-Should-Match功能,但是该功能无法解决我的问题,因为我不想消除匹配条件不够的文档,我只是想“惩罚”他们。
有没有办法提高协调因素的重要性?如果解决问题,我也将接受不使用协调因子的其他解决方案。
最佳答案
编写您自己的相似性可能是最简单的。您可以使用任何您喜欢的东西覆盖coord method,并且它的实现非常简单,实际上是这样的:
public class MySimilarity extends DefaultSimilarity {
@Override
public float coord(int overlap, int maxOverlap) {
return super.coord(overlap, maxOverlap)^2;
}
}
您可以引入自己的相似性实现in the schema:
<similarity class="this.is.MySimilarity"/>