Facettierte Suche mit Solr

Beispiele und Tutorial zur Implementierung von facettierten Suchabfragen in Apache Solr.

Lucidworks hat sich über Solr hinaus entwickelt und bietet die Lucidworks-Plattform, unsere KI-gestützte Suchlösung für Unternehmen. Entdecken Sie, wie wir Ihnen helfen können, Ihre Such- und Discovery-Erfahrungen zu verbessern.

Die Facettensuche hat sich zu einer wichtigen Funktion zur Verbesserung der Auffindbarkeit und des Sucherlebnisses für alle Arten von Suchanwendungen entwickelt. Dieser Artikel gibt Ihnen eine Einführung in die facettierte Suche mit Apache Solr.

Was ist Facettensuche?

Die Facettensuche ist die dynamische Gruppierung von Objekten oder Suchergebnissen in Kategorien, die es Benutzern ermöglichen, die Suchergebnisse nach einem beliebigen Wert in einem beliebigen Feld einzugrenzen (oder sogar die Suche ganz zu überspringen). Jede angezeigte Facette zeigt auch die Anzahl der Treffer innerhalb der Suche an, die dieser Kategorie entsprechen. Die Benutzer können dann die Suchergebnisse durch die Anwendung spezifischer Beschränkungen „aufschlüsseln“. Die facettierte Suche wird auch als facettiertes Browsing, facettierte Navigation, geführte Navigation und manchmal als parametrische Suche bezeichnet.

Am einfachsten lässt sich die Facettensuche anhand eines Beispiels erklären, und zwar anhand von CNET Reviews, der ersten Website, die Solr verwendet hat, noch bevor es von CNET an Apache übergeben wurde.

CNET Facettierte Suche

Bei diesem Beispiel handelt es sich tatsächlich um eine Facettensuche, denn es wurde mit allen Digitalkameras begonnen und nicht mit einer Benutzersuche. Der Hersteller ist eine Facette dieser Suchergebnisse, und die Facetteneinschränkungen oder Facettenwerte für diese Facette umfassen Canon USA, Sony und Nikon.

Ein früherer Bildschirm enthielt auch die Facetten Preis und Digitalkameratyp, aber sie werden nicht mehr angezeigt, weil wir bereits die Einschränkungen $400-$500 und SLR aus diesen Facetten ausgewählt haben. Aufgrund dieser Einschränkungen spiegeln die resultierende Facettenanzahl und die Kameralisten nur digitale Spiegelreflexkameras mit einem Preis zwischen $400 und $500 wider. Sie können auf jede der angezeigten Facetteneinschränkungen klicken, um die Suchergebnisse nach dieser Einschränkung weiter einzuschränken. Angewandte Einschränkungen können durch Anklicken innerhalb des Breadcrumb-Trails entfernt werden.

Die Facettensuche bietet eine effektive Möglichkeit, die Suchergebnisse zu verfeinern, indem sie immer weiter heruntergebrochen wird, bis die gewünschten Artikel gefunden werden. Die Vorteile sind unter anderem:

  • Hervorragendes Feedback – Benutzer sehen auf einen Blick eine Zusammenfassung der Suchergebnisse und wie sich diese Ergebnisse nach verschiedenen Kriterien aufschlüsseln.
  • Keine Überraschungen oder Sackgassen – Benutzer wissen, wie viele Ergebnisse übereinstimmen, bevor sie klicken. Werte mit Nullwerten werden normalerweise entfernt, um das visuelle Rauschen zu reduzieren und die Möglichkeit auszuschließen, dass ein Benutzer versehentlich eine Einschränkung auswählt, die zu keinen Ergebnissen führt.
  • Es gibt keine Auswahlhierarchie – die Benutzer können in der Regel in beliebiger Reihenfolge Beschränkungen hinzufügen oder entfernen.

Facettierung mit Solr implementieren

Es ist relativ einfach, Facettierungsinformationen von Solr zu erhalten, da es nur wenige Voraussetzungen gibt. Solr bietet die folgenden Arten der Facettierung, die alle ohne vorherige Konfiguration angefordert werden können:

  • Feldfacettierung – rufen Sie die Zählungen für alle Begriffe oder nur für die wichtigsten Begriffe in einem bestimmten Feld ab. Das Feld muss indiziert sein.
  • Abfragefacettierung – gibt die Anzahl der Dokumente in den aktuellen Suchergebnissen zurück, die ebenfalls der angegebenen Abfrage entsprechen .
  • Datumsfacettierung – gibt die Anzahl der Dokumente zurück, die in einen bestimmten Datumsbereich fallen.
  • Facettierungsbefehle werden zu jeder normalen Solr-Abfrage hinzugefügt, und die Facettierungszahlen werden in der gleichen Abfrageantwort zurückgegeben. Wenn Sie mit den Details der Abfrage in Solr nicht vertraut sind, lesen Sie das Tutorial.

Implementierung der Facette Hersteller

Um die Facette “ Hersteller“ zu implementieren, sende ich einen Feldfacettierungsbefehl an Solr. In diesem Beispiel wird davon ausgegangen, dass ein Feld mit dem Namen „manu“ im Schema existiert und dass der Hersteller als einzelnes Token indiziert ist. Der Typ „string“ im Solr-Schema ist ein geeigneter Feldtyp, um diese Anforderungen zu erfüllen.

Nehmen wir für einen Moment an, dass der Benutzer „Kamera“ in das Suchfeld eingegeben hat. Die Solr-Abfrage zum Abrufen der besten „Kamera“-Treffer würde lauten:

http://localhost:8983/solr/query?q=camera

Um die Anzahl der Facetten für das Feld „manu“ abzurufen, würden wir einfach die folgenden Parameter zu dieser Abfrage hinzufügen:

&facet=true
 &facet.field=manu

Einer einzigen Abfrage können beliebig viele Facettenbefehle hinzugefügt werden. Um sowohl das Feld „manu“ als auch das Feld „camera_type“ zu facetten, würden wir die folgenden Parameter hinzufügen:

&facet=true
 &facet.field=manu
 &facet.field=camera_type

Die Antwort auf die Abfrage enthält jetzt zusätzlich zu den Top-Treffern für die Abfrage auch Informationen zur Facettenanzahl für die angegebenen Felder.

"facet_fields" : {
 "manu" : [
 "Canon USA" , 25,
 "Olympus" , 21,
 "Sony" , 12,
 "Panasonic" , 9,
 "Nikon" , 4 ],
 "camera_type" : [
 "Compact" , 17,
 "Ultracompact" , 11,
 "SLR" , 9,
 "Full body" , 8 ]
 }

Die Anzahl der Facetten wird immer im Zusammenhang mit der aktuellen Suchanfrage angezeigt. So kann es z.B. sein, dass sich 100 Kameras des Herstellers Canon im Suchindex befinden, aber nur 17, die mit den aktuellen Suchergebnissen übereinstimmen. Nun liegt es an der Präsentationsschicht, dem Benutzer diese Informationen in Form von anklickbaren Links mit daneben angezeigten Zählungen anzuzeigen.

Implementierung der Facette Preis

Wenn wir für das Feld „Preis“ eine Feldfacettierung anfordern, erhalten wir Zählungen für einzelne Preise zurück. Wir wollen aber Preisspannen und keine Einzelpreise. Eine Lösung besteht darin, ein anderes Feld zu indizieren, das die Bereiche enthält, in die die Preise fallen (z.B. 100_200, 200_300, 300_400), und die Feldfacettierung auf dieses Feld anzuwenden. Eine flexiblere Lösung ist die Verwendung von Abfrage-Facetten, die die Möglichkeit bieten, die Anzahl der Facetten für beliebige Abfragen abzurufen.

Nehmen wir an, wir haben ein indiziertes Feld „Preis“ und möchten die Anzahl der Facetten für die folgenden Preisbereiche erhalten: $100 oder weniger, $100-$200, $200-$300, $300-$400, $400-$500 und $500 oder mehr. Wir fügen einfach einen facet.query-Befehl zu unserer Abfrage für jeden gewünschten Bereich hinzu:

&facet=true
 &facet.query=Preis:[* BIS 100]
 &facet.query=Preis:[100 BIS 200]
 &facet.query=[Preis:200 BIS 300]
 &facet.query=Preis:[300 BIS 400]
 &facet.query=[Preis:400 BIS 500]
 &facet.query=Preis:[500 BIS *]

Zusätzlich zu den Standardabfrageergebnissen und der Anzahl der angeforderten Facettenfelder enthält die Abfrageantwort auch eine Facettenanzahl für jede angegebene Facettenabfrage.

"facet_queries" : {
 "price:[* TO 100]" : 28,
 "price:[100 TO 200]" : 54,
 "price:[200 TO 300]" : 98,
 "price:[300 TO 400]" : 84,
 "price:[400 TO 500]": 73,
 "preis:[500 BIS *]" : 56
 }

Beschränkungen anwenden

Nun, da wir gelernt haben, wie man die Anzahl der Facetten abruft, wie können wir es dem Benutzer ermöglichen, die Suchergebnisse mit einer dieser Einschränkungen einzugrenzen? Die Antwort ist die standardmäßige Solr-Filterabfrage, bei der die Suchergebnisse nach einer beliebigen Anzahl von Abfragen gefiltert werden.

Nehmen wir noch einmal an, der Benutzer hat „Kamera“ in das Suchfeld eingegeben und wir haben Solr nach den am besten übereinstimmenden Dokumenten abgefragt und auch einige Facettenzahlen angefordert, die dem Benutzer angezeigt werden sollen.

http://localhost:8983/solr/query?q=camera
 &facet=on
 &facet.field=manu
 &facet.field=camera_type
 &facet.query=price:[* TO 100]
 &facet.query=price:[100 TO 200]
 &facet.query=[price:200 TO 300]
 &facet.query=price:[300 TO 400]
 &facet.query=[price:400 TO 500]
 &facet.query=price:[500 TO *]

Nehmen wir nun an, dass der Benutzer die Einschränkung $400-$500 aus der Facette Preis aufschlüsseln möchte, um eine neue Gruppe von Ergebnissen zu erhalten, die nur Kameras in dieser Preisklasse enthält. Hierfür verwenden wir den Parameter fq (filter query), mit dem man nach einer Abfrage filtern kann. Außerdem senden wir die entsprechenden Facettenbefehle erneut, da wir auch die Anzahl der Facetten aktualisieren möchten.

http://localhost:8983/solr/query?q=camera
 &facet=on&facet.field=manu&facet.field=camera_type
 &fq=price:[400 to 500]

Der Befehl fq kann an beliebiger Stelle in der Abfrage erscheinen – die Reihenfolge der Parameter spielt keine Rolle. Beachten Sie, dass wir die Anzahl der Facetten für die Preise nicht mehr abfragen, da wir die Ergebnisse auf eine Preisspanne beschränken und daher bereits wissen, dass die Anzahl der Facetten für andere Preisspannen gleich Null wäre.

Nachdem wir nun die Solr-Antwort erhalten und die Anzeige der Facette und die Auflistung der Ergebnisse in unserem Web-Frontend aktualisiert haben (einschließlich der Hinzufügung des Breadcrumbs „$400-$500“, damit der Benutzer ihn auf Wunsch entfernen kann), nehmen wir an, dass der Benutzer in der Facette camera_type auf „SLR“ klickt. Um unsere Suchergebnisse weiter zu filtern, fügen wir einfach einen zusätzlichen fq-Parameter hinzu.

http://localhost:8983/solr/query?q=camera
 &facet=on&facet.field=manu
 &fq=Preis:[400 bis 500]
 &fq=Kamera_Typ:SLR

Wenn die Solr-Antwort auf diese Anfrage vom Web-Frontend empfangen wird, können wir einen „SLR“-Breadcrumb hinzufügen und die Anzahl der Facetten und die wichtigsten Suchergebnisse erneut aktualisieren.

You Might Also Like

KI-Agenten dominieren den Einkauf. Ist Ihre Website auf die KI-gestützte Suche vorbereitet?

Generative KI-Agenten wie ChatGPT definieren die Produktsuche neu. Erfahren Sie, wie Sie...

Read More

Vom Suchunternehmen zum praktischen KI-Pionier: Unsere Vision für 2025 und darüber hinaus

CEO Mike Sinoway gibt Einblicke in die Zukunft der KI und stellt...

Read More

Wenn KI schief geht: Fehlschläge in der realen Welt und wie man sie vermeidet

Lassen Sie nicht zu, dass Ihr KI-Chatbot einen 50.000 Dollar teuren Tahoe...

Read More

Quick Links