如何在solr中组合多个查询

时间:2014-07-01 10:09:21

标签: solr lucene solr4

我使用solr 4.4.0和rsolr gem作为相应的API。

背景

  • 我的数据库中有很多分类,如戒指,耳环,项链等

  • 我的数据库中有很多收藏品,如矮胖,现代等。

  • 每个分类都有许多子类别,名为type

输入: 我想写一个带两个输入的查询: 1.分类学 2.收藏

期望的输出: 我有一组预定义的规则,它们为我提供了所需弹性的分类,集合和类型。

考虑以下规则:

If Anklets (Chunky)
Then
Necklaces (Chunky) (Beaded)
Earrings (Chunky) (Danglers)
Pendants (Chunky) (With chain)
Bracelets (Chunky) (Beaded)

此处输入分类法为anklets,输入集合为chunky。而且我希望在条件内对应于每个语句的6个结果。所以,我的结果应该有6个串珠项链,这些项链都是厚实的。 6个摇摇欲坠的耳环,等等......

问题: 我可以指定q和fq并获得每个语句的结果。但是我必须发送与每个语句相对应的单独请求,总共发出4个请求。是否可以形成一个查询,以便可以在一个请求中完成?

由于

1 个答案:

答案 0 :(得分:0)

这实际上可以使用solr。

提供的group结果功能来完成

第一步是使用布尔运算符组合查询以生成fq:

fq => "(product_taxonomy_name:Necklaces AND product_collection_value:Chunky AND product_type_value:Beaded) 
    OR (product_taxonomy_name:Earrings AND product_collection_value:Chunky AND product_type_value:Danglers) 
    OR (...) 
    OR (...)"

在查询中传递以下附加参数:

group => true, group.field => product_taxonomy_name, group.limit => 6