2016-06-10 44 views
0

当查询solr产品时,我也返回了构面。适用于类别,尺寸,颜色,价格等领域。使用solr构面作为过滤器

所以我做线沿线的东西:

solr.search(*:*, **{'start': 0, 
        'rows': 50, 
        'defType': 'edismax', 
        'fq': '(category=Shoes)', 
        'facet': 'true', 
        'facet.limit': -1, 
        'facet.field': ['size', 'colour', 'price'], 
        'facet.mincount': 0}) 

如果我查询"Shoes"类我看到匹配的类别,它的可能的尺寸,颜色和价格。现在,如果我将其添加到筛选器(colour:Red),则所有其他可能的颜色将消失,这与现在按颜色过滤是一致的,但用户可能想要选择两种颜色。

什么是更好/通常的方式来实现这一目标?

回答

1

您可以通过向您的fq添加标签并在创建构面时排除这些标签来实现此目的。一个例子是展现在Faceting - LocalParameters for Faceting

要为直接约束DOCTYPE当前没有选择的doctype值,标签过滤器返回计数,并在小面DOCTYPE时排除这些过滤器。

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

筛选排除支持所有类型的小面。 tag和ex本地参数都可以通过用逗号分隔来指定多个值。

的实施将如图所示然后就或者每个过滤器一同在fq该过滤器(所以你得到color:red OR color:bluecolor:(red OR blue)

Yonik也has an example on his blog that's very close to your use-case,但它使用同样的方法不同选择的值在上面的参考手册中。

+0

非常感谢您的回答。这正是我想要的,并且帮助了很多。 – lennard