(Lucene/SOLR) 我可以根据子查询分组来注释查询结果吗?

(Lucene/SOLR) Can I annotate the results of a query based on grouping by subqueries?

我想根据 "categories" 对任何查询的结果进行分组。

"Categories" 是关键字查询,它们不能在索引时预先定义,因为它们会随着时间的推移而发展和变化。

更具体地说:

我有一组由查询定义的类别 q1,q2,...qN.

鉴于用户查询 (q),我需要 return 顶部结果文档 (d1,...d10) 和往常一样,

但我需要知道它们是否属于每个组 q1,...qN.

据我了解我可以对查询使用分组,但这有两个缺点:

  1. 我将更改结果,因为我将获得每个查询的顶级文档,而不是 d1,...d10
  2. 我将取消结果的原始排序

我现在能想到的唯一解决方案是先发出 q 以获得结果和排序,然后每个 q AND q1, q AND q2, 等得到分组,然后解析所有的结果并在查询外分组...昂贵!

有什么办法可以得到我需要的东西吗?

您可以使用正常的方式进行查询,然后使用函数查询在 fl 参数中添加与您的类别匹配的伪字段。

http://solr.pl/en/2011/11/22/solr-4-0-new-fl-parameter-functionalities-first-look/ https://cwiki.apache.org/confluence/display/solr/Function+Queries

示例:

fl=category1:sum(0.0, query($q1))

q1={!dismax}您的查询 1

fl=category2:sum(0.0, query($q2))

q2={!dismax}您的查询 2