我正在尝试搜索标题,因此仅出现单词就足够了,并且它的出现频率至少与我的用例无关。
例如: 搜索查询是:“早起带我的宠物”
我得到的结果是: 结果1: 宠物用品 2.3924026
结果2: 宠物计入机舱宠物限制 2.0538325
结果3: 允许宠物入住 1.6092906
理想情况下,我希望结果3出现在顶部,这需要进行一些外部工作。但是结果1很明显并且可以接受,但是结果2的得分为2.05,因为它两次提到了“ pet”,这意味着tf值较高[2/4(删除停用词后)。我的要求是仅检测单词的存在,而不要考虑单词的出现频率。
如何实现?
答案 0 :(得分:0)
如果您不需要短语搜索或其他依赖于要编制位置数据的功能,则可以对相关字段使用omitTermFreqAndPositions="true"
。在这种情况下,将不会为这些条款存储任何位置或频率。
如果这不是一个选项,则可以创建一个虚拟相似性类,该类扩展DefaultSimilarity并为tf返回1.0f。这样的示例可以在Solr Custom Similarity中找到。
您还可以为每个字段配置不同的相似性类别,从而允许您为单个字段放弃tf
得分。
第三个选择是对要获得恒定分数的查询部分使用the constant scoring operator。不确定edismax解析器是否支持此功能。