我正在尝试搜索标题因此只是单词的存在就足够了,其频率至少与我的用例无关。
例如:搜索查询是:“早点登上我的宠物”
我得到的结果是:结果1:宠物2.3924026
结果2:宠物计算机舱宠物限制2.0538325
结果3:宠物预售允许1.6092906
理想情况下,我希望结果3位于顶部,需要一些外部工作。然而,结果1是显而易见且可接受的,但结果2的得分为2.05,因为其“宠物”被提及两次,暗示tf值更高[2/4(在删除停止词之后)]。我的要求只是检测单词的存在而不是单词的频率。
怎么做到这一点?
如果您不需要短语搜索或其他依赖于索引位置数据的功能,则可以将omitTermFreqAndPositions="true"
用于相关字段。在这种情况下,不会存储条款的位置或频率。
如果这不是一个选项,您可以创建一个扩展DefaultSimilarity的虚拟相似度类,并为tf返回1.0f。这样的例子可以在Solr Custom Similarity找到。
您还可以为每个字段配置不同的相似度类,允许您删除单个字段的tf
评分。
第三种选择是使用the constant scoring operator作为您希望获得常量分数的查询部分。不确定edismax解析器是否支持此功能。