如何修改SOLR tf idf相似度?

问题描述 投票:0回答:1

我正在尝试搜索标题因此只是单词的存在就足够了,其频率至少与我的用例无关。

例如:搜索查询是:“早点登上我的宠物”

我得到的结果是:结果1:宠物2.3924026

结果2:宠物计算机舱宠物限制2.0538325

结果3:宠物预售允许1.6092906

理想情况下,我希望结果3位于顶部,需要一些外部工作。然而,结果1是显而易见且可接受的,但结果2的得分为2.05,因为其“宠物”被提及两次,暗示tf值更高[2/4(在删除停止词之后)]。我的要求只是检测单词的存在而不是单词的频率。

怎么做到这一点?

solr lucene
1个回答
0
投票

如果您不需要短语搜索或其他依赖于索引位置数据的功能,则可以将omitTermFreqAndPositions="true"用于相关字段。在这种情况下,不会存储条款的位置或频率。

如果这不是一个选项,您可以创建一个扩展DefaultSimilarity的虚拟相似度类,并为tf返回1.0f。这样的例子可以在Solr Custom Similarity找到。

您还可以为每个字段配置不同的相似度类,允许您删除单个字段的tf评分。

第三种选择是使用the constant scoring operator作为您希望获得常量分数的查询部分。不确定edismax解析器是否支持此功能。

© www.soinside.com 2019 - 2024. All rights reserved.