在我的SOLR索引中,我的文档包含许多字段:name
,title
,description
,tags
等。我想按编号对文档进行排序与查询匹配的字段,但不希望考虑匹配字词在字段中出现的次数(因此没有TFIDF,没有BM25)。
例如:
Documents:
ID: 100, title: "foo foo bar bar", name: "foo bar"
ID: 101, title: "foo bar", name: "gibberish foo"
ID: 102, title: "foo bar", name: "foo bar"
当我搜索" foo bar"时,我希望结果按顺序排序:
如何使用SOLR实现这一目标?什么应该是sort
条款?
答案 0 :(得分:1)
您可以尝试使用(tags:stack)^=1
等常量分数查询来禁用术语频率。请注意,这是一种特殊语法。然后使用eDisMax
查询解析器并在qf
字段中指定,可能需要一些提升,并为tie
指定一个值,如1.这需要确保所有子查询(字段)用于计算分数。
这应该可以做你想要的,因为更多匹配的字段会导致更高的分数,并且术语频率不再用于评分。