我正在使用 Solr 4.10,我们的要求是具有多个方面。每个方面应该过滤应该只影响选定的方面,而不是其他方面。
例如,假设有两个方面 BRAND 和 TYPE。当用户选择品牌为 Nikon 时,它应该影响 TYPE 方面,而不是 BRAND 方面。TYPE 的类似行为。
我尝试使用 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 会以某种方式返回其中一个方面的方面。对于上面的查询,我得到了一些类型的值,即使响应中没有文档。
以下是我们得到的回应,
{
"response": {
"numFound": 0,
"start": 0,
"docs": []
},
"facet_counts": {
"facet_queries": {},
"facet_fields": {
"type": [
"TV",
4
],
"brand": []
},
"facet_dates": {},
"facet_ranges": {},
"facet_intervals": {}
}
}