在Solr查询中提升协调因子

时间:2014-02-11 16:04:02

标签: solr lucene

我的默认Solr评分算法存在问题,该算法特定于我的集合的域。在我的域中,包含所有查询字词或大多数查询字词的文档比仅包含少量字词的文档更具相关性。我想提高文档的分数,以便匹配的条件越多,分数越高。我知道solr已经通过将得分乘以协调因子来提升这些文档。然而,协调因素对我来说不够重要,我希望将它提升到一定的权力。我也熟悉ExtendedDismax解析器的最小匹配功能,但该功能无法解决我的问题,因为我不想消除那些与术语不匹配的文档,我只是想“惩罚”它们。

有没有办法增加协调因素的重要性?如果他们解决了这个问题,我也会接受其他没有使用协调因素的解决方案。

1 个答案:

答案 0 :(得分:1)

编写自己的相似性可能最容易。您可以使用您喜欢的任何内容覆盖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"/>