2016-06-10 52 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