RavenDb でファセット検索を実行する方法があるかどうかを尋ねたいのですが、フィルターで除外されたファセットも取得します。
例:
Car
プロパティColor : string
とを持つエンティティを作成しましょうStatus : enum(New,Used)
。
車を検索するときRed
は、他のすべての色の数も取得したいと考えています。同様に、Used
車を検索する場合は、新車の数も確認したいと考えています。
すべてのチェックを外した場合:
UI
Color: [ ] Red (5) [ ] Blue (7) [ ] White (15)
Status: [ ] Used (20) [ ] New (7)
C#
session.Query<Car, Cars_Index>().ToFacets("facets/Cars");
適切な結果が得られます。
Color
しかし、両方をフィルタリングするとStatus
、非常に限られた結果しか得られません。
UI
Color: [x] Red (3)
Status: [x] Used (3)
C#
session.Query<Car, Cars_Index>()
.Where(a => a.Status == CarStatus.Used)
.Where(a => a.Color == "Red")
.ToFacets("facets/Cars");
Response (JSON):
{ "Color": [ { "Range": "Red", "Count": 3 } ], "Status" : [ { "Range": "Used", "Count": 3 } ] }
私が現在行っていることは、ファセットごとに個別のクエリを発行することです。
var colorFacet = session.Query<Car, Cars_Index>()
.Where(a => a.Status == CarStatus.Used)
.ToFacets("facets/Cars");
var statusFacet = session.Query<Car, Cars_Index>()
.Where(a => a.Color == "Red")
.ToFacets("facets/Cars");
私が達成したいこと:
UI
Color: [x] Red (3) [ ] Blue (4) [ ] White (12)
Status: [x] Used (3) [ ] New (7)
赤の中古車、青の中古車、白の中古車、ユーザーの赤の車、新しい赤の車の数を取得します。したがって、ユーザーは、チェックボックスをクリックすると何が起こるかを即座にフィードバックできます。
ファセットの数と多様性が増大するにつれて、これは管理不能になります。1回のリクエスト/クエリで実行できるように設定する方法はありますか。
ありがとう