2 Stimmen

RavenDb-Facettensuche mit herausgefilterten Facettenbereichen

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

2voto

Ayende Rahien Punkte 22590

Das ist nicht die Art und Weise, wie Facetten mit RavenDB (oder generell) funktionieren. Sie betrachten Facetten basierend auf Ihren actual Abfrage, nicht als Schnittmenge aller Facetten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X