3

ファセットクエリUIのファセット数を計算したいのですが、ファセットフィルターを使用して必要な数を取得できないため、何かが不足していると思います。

これが例です。各ファセットに3つの可能な用語がある2つのファセットがあるとします。

Colors: {red, yellow, blue}
Notes: {do, re, mi}

検索を行うとき、ファセット内の各用語のカウントは、他のファセットに設定されているフィルターを考慮していません。

説明する:

[ ] All colors (18)
 [x] Red (10)
 [ ] Green (5)
 [ ] Blue (3)

[ ] All notes (18)
 [ ] Do (5)
 [x] Re (7)
 [ ] Mi (6)

各ファセット内の合計は、フィルターが設定されていないかのように、クエリのヒットの合計数になることに注意してください。

私が望む動作は、Notesファセットの数値が、Colorsファセットのフィルターを考慮に入れることです。その逆も同様です。つまり、ノート用語の数値の合計は、18ではなく10(赤いフィルターに一致するため)である必要があります。

興味深いことに、ドキュメントのスクリーンショットの例では、Linked Inの例を使用しており、実際に必要な動作を示しています。

http://www.elasticsearch.org/guide/reference/api/search/facets/

各ファセットの用語ごとに1回手動でクエリを再送信することで、必要な結果を得ることができます(ugh)が、クエリを変更することで、LinkedInと同じ動作をすぐに取得できる方法があるのではないかと思います。

4

1 に答える 1

8

これが機能することを私が見つけた唯一の方法は、複数選択ファセットに対して次のロジックを使用することです。

ユーザーがファセットから値を選択する(「ドリルダウン」)ときはいつでも、選択が行われたファセットを除くすべてのファセットに(facet_filterを介して)対応するフィルターを追加し、クエリをフィルターするためのトップレベルフィルターに追加します結果。

言い換えると、A、B、Cの3つの複数選択ファセットが与えられます。

  • A=>ファセットBおよびCのfacet_filterだけでなくトップレベルフィルターにフィルターを追加するから値を選択します。
  • Bから値を選択=> A&Cのfacet_filterだけでなくトップレベルフィルターにもフィルターを追加します。
  • ... 等々

トップレベルのフィルターは常にすべての選択のフィルターを組み合わせますが、個々のファセットには、他のファセットの選択に応じたfacet_filtersが含まれます。

于 2012-08-18T12:47:08.193 に答える