Solr中的Facet组 - 在一个查询中是可能的

时间:2014-11-21 14:45:48

标签: solr facet faceted-search

我在Solr中使用facet并且我有facet组的概念,每个facet包含许多方面。

说我有这样的结构

Product Type
- Chairs (50)
- Tables (20)
- Mirrors (5)

Color
- Yellow (5)
- Black (50)
- Red (10)
- Orange (10)

我在构面组中的构面与组之间的AND关系之间存在OR关系。

因此,如果我选择Chairs作为一个方面,我会得到50个产品。使用Solr中的标准刻面(并假设每种产品只能有一种产品类型和一种颜色),现在将提供:

Product Type
- Chairs (50)
- Tables (0)
- Mirrors (0)

Color
- Yellow (5)
- Black (30)
- Red (5)
- Orange (10)

然而,我真正想要的是产品类型中的方面数量保持不变,因为它反映了如果选择其中一个会发生什么。

可以在一个查询中使用Solr完成吗?

1 个答案:

答案 0 :(得分:1)

创建构面时可以实现using tagged filters and then excluding them

从引用页面:

  

要为doctype实现多选面,GUI可能仍希望显示其他doctype值及其关联计数,就好像尚未应用doctype:pdf约束一样。例如:

=== Document Type ===
  [ ] Word (42)
  [x] PDF  (96)
  [ ] Excel(11)
  [ ] HTML (63)
  

要返回当前未选中的doctype值的计数,请标记直接约束doctype的过滤器,并在doctype上进行分面时排除这些过滤器。

q=mainquery&fq=status:public&fq={!tag=dt}doctype:pdf&facet=on&facet.field={!ex=dt}doctype
  

所有类型的构面都支持过滤器排除。 tag和ex local params都可以通过用逗号分隔来指定多个值。