(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.
据我了解我可以对查询使用分组,但这有两个缺点:
- 我将更改结果,因为我将获得每个查询的顶级文档,而不是 d1,...d10
- 我将取消结果的原始排序
我现在能想到的唯一解决方案是先发出 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
我想根据 "categories" 对任何查询的结果进行分组。
"Categories" 是关键字查询,它们不能在索引时预先定义,因为它们会随着时间的推移而发展和变化。
更具体地说:
我有一组由查询定义的类别 q1,q2,...qN.
鉴于用户查询 (q),我需要 return 顶部结果文档 (d1,...d10) 和往常一样,
但我需要知道它们是否属于每个组 q1,...qN.
据我了解我可以对查询使用分组,但这有两个缺点:
- 我将更改结果,因为我将获得每个查询的顶级文档,而不是 d1,...d10
- 我将取消结果的原始排序
我现在能想到的唯一解决方案是先发出 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