私は自分の問題の解決策を探すのに何時間も費やしました。私が達成しようとしていることに近い質問をする人を見てきましたが、今のところ誰も同じ質問をしていないようです。これを適切に説明できるかどうか見てみましょう。
私が靴屋だとしましょう。私の Web サイトには 3 つのページがあります。1 つは男性用の靴、もう 1 つは女性用の靴、もう 1 つは子供用の靴です。私の靴のテーブルにフィールド prod_group があるとしましょう。したがって、男性用ページの場合、クエリは q=prod_group:men になります。ここで、私が提供したいファセットの 1 つがブランドであるとしましょう。q=prod_group:men&filter.field=ブランド
私が抱えている問題は、ファセットの結果が、メンズ シューズに関連するブランドだけでなく、データベース内のすべてのブランドを表示していることです。つまり、「マイリトルポニー」シリーズにメンズシューズがゼロということはすでに知っています。ブランド ファセットに My Little Pony を表示したくありません。facet.mincount の設定も必要なものではありません。クエリ q=prod_group:men&fq=color:red&filter.field=brand を実行すると、クライアントはブランド「Mighty Joe」に赤い靴がないことを消費者に示したいので、ファセット数が のファセットが必要です。 0.
基本的に私が望んでいるのは、ベースクエリの結果に基づくファセット結果です。これまでのところ、これを達成する唯一の方法は、2 つのクエリを実行することです。最初のクエリは基本クエリのみで、facet.mincount = 1 を設定して関連するファセットのリストを取得し、次に facet.mincount を 0 に戻して実際のクエリを実行します。既に行われたファセットの選択に基づいて、利用できなくなった特定のオプションをいつグレー表示するかを理解できます。
2 つのクエリを実行するのは、エレガントとは言えません。facet.pivot は長期的には役立つかもしれませんが、私たちはまだ 3.x を使用しており、すぐに変わるとは思いません。1 つのクエリで必要なことを実行するクエリ/スキーマ/構成オプションを見逃していませんか?