私は Solr 4.10 を使用しており、要件は複数のファセットを持つことです。各ファセット フィルターは、選択したファセットのみに影響し、他のファセットには影響しません。
たとえば、BRAND と TYPE の 2 つのファセットがあるとします。ユーザーがブランドとして Nikon を選択すると、TYPE ファセットに影響しますが、BRAND ファセットには影響しません。TYPE についても同様の動作です。
タグと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 は何らかの形でファセットの 1 つに対してファセットを返します。上記のクエリでは、応答にドキュメントが含まれていなくても、型に何らかの値が含まれています。
以下は、取得した応答です。
{
"response": {
"numFound": 0,
"start": 0,
"docs": []
},
"facet_counts": {
"facet_queries": {},
"facet_fields": {
"type": [
"TV",
4
],
"brand": []
},
"facet_dates": {},
"facet_ranges": {},
"facet_intervals": {}
}
}