我在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完成吗?
答案 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都可以通过用逗号分隔来指定多个值。