2016-06-10 13 views
0

Bei der Abfrage von solr nach Produkten gebe ich auch die Facetten zurück. Für Felder wie Kategorie, Größe, Farbe, Preis.Solr-Facetten als Filter verwenden

So mache ich etwas entlang der Linien von:

solr.search(*:*, **{'start': 0, 
        'rows': 50, 
        'defType': 'edismax', 
        'fq': '(category=Shoes)', 
        'facet': 'true', 
        'facet.limit': -1, 
        'facet.field': ['size', 'colour', 'price'], 
        'facet.mincount': 0}) 

Wenn ich für die Kategorie abfragen "Shoes" ich die mögliche Größe, Farben und Preise zu sehen, die diesen Kategorien entsprechen. Jetzt, wenn ich zum Filter (colour:Red) hinzufüge, dann verschwinden alle anderen möglichen Farben, die logisch sind, da sein jetzt auf der Farbe gefiltert ist, aber der Benutzer möchte möglicherweise zwei Farben wählen.

Was ist der bessere/der übliche Weg, dies zu erreichen?

Antwort

1

Sie können dies implementieren, indem Sie Tags zu Ihren fq hinzufügen und diese Tags dann ausschließen, wenn Sie die Facetten erstellen. Ein Beispiel dafür ist Show in Faceting - LocalParameters for Faceting:

Rückkehr zählt für Doctype Werte, die derzeit nicht ausgewählt sind, Tag-Filter, die direkt Doctype beschränken, und diese Filter aus, wenn sie auf Doctype Facettierung.

q=mainquery&fq=status:public&fq={!tag=dt}doctype:pdf&facet=true&facet.field={!ex=dt}doctype

Filter Ausschluss ist für alle Arten von Facetten unterstützt. Sowohl die Parameter tag als auch ex können mehrere Werte angeben, indem sie durch Kommas getrennt werden.

würde die Umsetzung dann nur oder die verschiedenen ausgewählten Werte für jeden Filter zusammen in den fq für diese Filter (so erhalten Sie color:red OR color:blue oder color:(red OR blue).

Yonik auch has an example on his blog that's very close to your use-case, aber es verwendet die gleiche Methode wie gezeigt im obigen Referenzhandbuch

+0

Vielen Dank für Ihre Antwort, genau das möchte ich und hilft Ihnen sehr. – lennard

Verwandte Themen