如何在solr中组合多个查询

如何在solr中组合多个查询,solr,lucene,solr4,Solr,Lucene,Solr4,我正在为相应的API使用Solr4.4.0和RSolrGem 背景 我的数据库中有许多分类法,如戒指、耳环、项链等 我的数据库中有很多收藏,如chunky、modern等 每个分类法都有许多称为类型的子类别 输入: 我想编写一个包含两个输入的查询: 1.分类学 2.收藏 所需输出: 我有一组预定义的规则,这些规则为我提供了所需重分类的分类、集合和类型 考虑以下规则: If Anklets (Chunky) Then Necklaces (Chunky) (Beaded) Earrings (

我正在为相应的API使用Solr4.4.0和RSolrGem

背景

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

  • 我的数据库中有很多收藏,如chunky、modern等

  • 每个分类法都有许多称为类型的子类别

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

所需输出: 我有一组预定义的规则,这些规则为我提供了所需重分类的分类、集合和类型

考虑以下规则:

If Anklets (Chunky)
Then
Necklaces (Chunky) (Beaded)
Earrings (Chunky) (Danglers)
Pendants (Chunky) (With chain)
Bracelets (Chunky) (Beaded)
这里的输入分类是
anklets
,输入集合是
chunky
。我想要6个结果,对应于then条件中的每个语句。所以,我的结果应该有6条珠子项链,它们都属于粗块系列。6个悬挂式耳环,镶嵌在厚实的花边等等

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


谢谢

这实际上可以使用solr提供的
结果功能来完成

第一步是使用布尔运算符组合查询以生成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

您的单独请求看起来如何?是否不可能使用布尔或运算符对它们进行累积?@ OUMU-NEGRU:考虑第一个语句。代码>q=>“产品分类法\名称:项链”,fq=>“+产品分类法\集合\值:粗块,+产品类型\值:串珠”,行=>6@omu\ negru:如果我将这些与或类似的组合:`fq=>”(产品分类法\名称:项链和产品集合\值:粗块和产品类型\值:串珠)或(产品分类法\名称:耳环和产品系列\价值:矮胖和产品类型\价值:垂饰)或(…)或(…)”.我如何确保每个语句对应6个结果?呵呵……忘了这一部分。既然你提到了,我想不出一个简单的方法来做,除非可能要求100+个结果,这样可以确保每个语句都有6+个结果,然后丢弃每个语句中相关性低于前6个的结果category@omu_negru:它可以驱动很好,请检查答案。感谢您的帮助,您为我指明了正确的方向-使用AND和OR运算符