我的架构如下:
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个字段
如果您的目的是基于多个“分组依据”字段来获得分组计数,则可以使用枢轴构面来实现此目的。
&facet.pivot=category_id,group_id
Run Code Online (Sandbox Code Playgroud)
Solr会在facet_pivot元素下方的搜索结果页面之后,为您提供分组结果计数的层次结构。
如果您可以更改要发布到 solr 的数据,那么我建议您创建一个字符串字段,该字段将具有category_id 和 group_id 的串联。例如,如果category_id = 5且group_id=2,则您的字符串字段可以是:- '5,2'(使用','或任何其他字符作为分隔符)。然后您可以对该字符串字段进行分组。