Apache Solr:按查询

时间:2017-09-27 09:55:54

标签: sorting solr

在我的SOLR索引中,我的文档包含许多字段:nametitledescriptiontags等。我想按编号对文档进行排序与查询匹配的字段,但不希望考虑匹配字词在字段中出现的次数(因此没有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"时,我希望结果按顺序排序:

  1. 102(两个字段匹配)
  2. 100(也是两个字段匹配,因此100和102应该得分完全相同)
  3. 101(一个字段匹配)
  4. 如何使用SOLR实现这一目标?什么应该是sort条款?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用(tags:stack)^=1等常量分数查询来禁用术语频率。请注意,这是一种特殊语法。然后使用eDisMax查询解析器并在qf字段中指定,可能需要一些提升,并为tie指定一个值,如1.这需要确保所有子查询(字段)用于计算分数。

这应该可以做你想要的,因为更多匹配的字段会导致更高的分数,并且术语频率不再用于评分。