我正在使用Solr 4.10,我们的要求是有多个方面。应该过滤的每个构面应仅影响所选的构面,而不影响其他构面。
例如,假设有两个方面BRAND和TYPE。当用户选择品牌为尼康时,它应该影响TYPE facet,而不是BRAND facet。类似的行为。
我尝试使用tag和ex函数实现,查询如下所示,
/select?q=query&wt=json&start=0&rows=10&facet=true&fq={!tag=brand}brand:(Canon,Nikon)&fq={!tag=type}type:(TV)&facet.mincount=1&facet.field={!ex=brand}brand&facet.field={!ex=type}type&fl=id,brand,type
这在大多数情况下都能正常工作,但是当结果为零时,Solr会以某种方式返回facet的facet。对于上面的查询,我在类型中获得了一些值,即使响应中没有文档。
以下是我们得到的回复,
{
"response": {
"numFound": 0,
"start": 0,
"docs": []
},
"facet_counts": {
"facet_queries": {},
"facet_fields": {
"type": [
"TV",
4
],
"brand": []
},
"facet_dates": {},
"facet_ranges": {},
"facet_intervals": {}
}
}