Ich möchte fragen, ob es in RavenDb eine Möglichkeit gibt, eine Facettensuche auszuführen, aber auch die Facetten zu erhalten, die herausgefiltert wurden.
Ejemplo:
Lassen Sie uns eine Car
Entität mit Eigenschaften Color : string
y Status : enum(New,Used)
.
Wenn ich suche nach Red
Autos würde ich auch gerne in allen anderen Farben zählen lassen. Ähnlich ist es, wenn ich suche nach Used
Autos möchte ich auch die Anzahl der Neuwagen sehen.
Wenn ich alles abgewählt habe:
UI
Color: [ ] Red (5) [ ] Blue (7) [ ] White (15)
Status: [ ] Used (20) [ ] New (7)
C#
session.Query<Car, Cars_Index>().ToFacets("facets/Cars");
Ich erhalte das richtige Ergebnis.
Aber sobald ich nach beidem filtere Color
y Status
Ich erhalte nur sehr begrenzte Ergebnisse:
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 } ] }
Zurzeit stelle ich für jede Facette eine eigene Abfrage:
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");
Was ich gerne erreichen möchte:
UI
Color: [x] Red (3) [ ] Blue (4) [ ] White (12)
Status: [x] Used (3) [ ] New (7)
So erhalten Sie die Anzahl der roten Gebrauchtwagen, der blauen Gebrauchtwagen, der weißen Gebrauchtwagen, der roten Benutzerautos und der roten Neuwagen. So hat der Benutzer eine unmittelbare Rückmeldung darüber, was passiert, wenn er auf ein Kontrollkästchen klickt.
Was mit zunehmender Anzahl und Variabilität der Facetten unüberschaubar wird. Gibt es eine Möglichkeit, wie man es so einrichten kann, dass es in einer Anfrage/Abfrage ausgeführt werden kann.
Danke