【问题标题】:Apache Solr: sort by number of fields matching the queryApache Solr:按与查询匹配的字段数排序
【发布时间】:2018-03-08 18:19:39
【问题描述】:

在我的 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(一个字段匹配)

如何使用 SOLR 实现这一目标? sort 子句应该是什么?

【问题讨论】:

    标签: sorting solr


    【解决方案1】:

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

    这应该可以满足您的要求,因为更多匹配的字段将导致更高的分数,并且不再使用术语频率进行评分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 2015-12-08
      相关资源
      最近更新 更多