Solr:我如何在两个不同的领域进行分组?

Elo*_*die 10 solr

我的架构如下:

product_id  
category_id
Run Code Online (Sandbox Code Playgroud)

类别包含产品.
在solr 3.6中,我对category_id进行了分组,效果很好.

我刚刚添加了一个新字段:

group_id
Run Code Online (Sandbox Code Playgroud)

一组包含大小或颜色不同的产品.
示例:蓝色,红色和黄色的鞋子是3种不同的产品,并且具有相同的group_id.

除了字段category_id的结果分组之外,我希望在我的结果中只有一个group_id的产品,假设group_id可以为null(对于不属于组的产品).

按照鞋子的例子,这意味着对于请求"鞋子",3个产品中只有一个应该是结果.

我想在group_id上进行第二次结果分组,但我似乎不可能这样做.

任何的想法?

编辑:现在,我在php中处理结果,删除已经在结果中的group_id的文档.我打开这个主题,以防有人发现如何分组2个字段

RMo*_*sey 5

如果您的目的是基于多个“分组依据”字段来获得分组计数,则可以使用枢轴构面来实现此目的。

&facet.pivot=category_id,group_id
Run Code Online (Sandbox Code Playgroud)

Solr会在facet_pivot元素下方的搜索结果页面之后,为您提供分组结果计数的层次结构。

http://wiki.apache.org/solr/SimpleFacetParameters?highlight=%28pivot%29#Pivot_.28ie_Decision_Tree.29_Faceting


Max*_*Max 2

如果您可以更改要发布到 solr 的数据,那么我建议您创建一个字符串字段,该字段将具有category_id 和 group_id 的串联。例如,如果category_id = 5且group_id=2,则您的字符串字段可以是:- '5,2'(使用','或任何其他字符作为分隔符)。然后您可以对该字符串字段进行分组。