Bessere Suche mit Fusionssignalen
Signale in Lucidworks Fusion nutzen Informationen über externe Aktivitäten, z.B. Informationen aus Logfiles und Transaktionsdatenbanken, um die Qualität der Suchergebnisse…
Signale in Lucidworks Fusion nutzen Informationen über externe Aktivitäten, z.B. Informationen aus Logfiles und Transaktionsdatenbanken, um die Qualität der Suchergebnisse zu verbessern. Dieser Beitrag folgt auf meinen vorherigen Beitrag Grundlagen der Speicherung von Signalen in Solr mit Fusion für Dateningenieure, in dem ich gezeigt habe, wie man Signaldaten indiziert und aggregiert. In diesem Beitrag zeige ich Ihnen, wie Sie Abfrage-Pipelines unter Verwendung dieser aggregierten Signaldaten schreiben und debuggen können.
Die Klicks der Benutzer stellen eine Verbindung her zwischen dem, wonach die Benutzer fragen und dem, was sie sich in einer Reihe von Suchergebnissen, meist mit Produktbildern, ansehen. Wenn Benutzer die Suchergebnisse für eine bestimmte Art von Produkten auf eine Reihe von Produkten reduziert haben, die genau dieser Art von Produkten entsprechen, z.B. wenn die Logfile-Einträge Suchanfragen nach „Netgear“ oder „Router“ oder „Netgear-Router“ mit Klicks auf Produkte verknüpfen, die tatsächlich Router sind, dann kann diese Information verwendet werden, um neue Suchanfragen über den Produktkatalog zu verbessern.
Die Geschichte bis jetzt
Um zu zeigen, wie Signale zur Verbesserung der Suche in einer E-Commerce-Anwendung verwendet werden können, habe ich eine Reihe von Fusion-Sammlungen erstellt:
- Eine Sammlung namens „bb_catalog“, die Produktdaten von Best Buy enthält. Dieser Datensatz besteht aus über 1,2 Mio. Artikeln, hauptsächlich Unterhaltungselektronik wie Haushaltsgeräte, Fernseher, Computer und Unterhaltungsmedien wie Spiele, Musik und Filme. Dies ist die primäre Sammlung.
- Eine Hilfssammlung namens „bb_catalog_signals“, die aus einem synthetischen Datensatz über Best Buy-Abfrageprotokolle aus dem Jahr 2011 erstellt wurde. Dabei handelt es sich um die rohen Signaldaten, d.h. jeder Logfile-Eintrag ist als einzelnes Dokument gespeichert.
- Eine Hilfssammlung namens „bb_catalog_signals_aggr“, die aus den Daten in „bb_catalog_signals“ abgeleitet wurde, indem alle Rohsignal-Datensätze auf der Grundlage der Kombination von Suchanfrage, Feld „query_s“, angeklicktem Artikel, Feld „doc_id_s“, und Suchkategorien, Feld „filters_ss“, aggregiert wurden.
Alle Dokumente in der Sammlung „bb_catalog“ haben eine eindeutige Produkt-ID, die im Feld „id“ gespeichert ist. Alle Artikel gehören zu einer oder mehreren Kategorien, die in dem Feld „categories_ss“ gespeichert sind.
Der folgende Screenshot zeigt das Fusion UI-Suchfeld über der Sammlung „bb_catalog“, nachdem Sie das Tool zur Konfiguration der Suchoberfläche verwendet haben, um die angezeigten Dokumentfelder einzuschränken. Mit dem Zahnradsymbol neben dem Suchfeld können Sie dieses Steuerelement öffnen und schließen. Die Einstellungen für „Dokumente“ sind so festgelegt, dass als primäres Feld „name_t“ angezeigt wird, als sekundäres Feld „id“ und als zusätzliche Felder „name_t“, „id“ und „category_ss“. Das Dokument im gelben Rechteck ist ein Netgear-Router mit der Produkt-ID „1208844“.
Für die Sammlung „bb_catalog_signals“ wird die Zeichenfolge der Suchanfrage im Feld „query_s“ gespeichert, der Zeitstempel im Feld „tz_timestamp_txt“, die ID des angeklickten Dokuments im Feld „doc_id_s“ und die Menge der Kategoriefilter in den Feldern „filters_ss“ sowie „filters_orig_ss“.
Der folgende Screenshot zeigt die Ergebnisse einer Suche nach Rohsignalen, bei der die ID des angeklickten Produkts „1208844“ war.
Die Sammlung „bb_catalog_signals_aggr“ enthält aggregierte Signale. Zusätzlich zu den Feldern „doc_id_s“, „query_s“ und „filter_ss“ enthalten die aggregierten Klick-Signale Felder:
- „count_i“ – die Anzahl der Rohsignale, die für diese Abfrage, dieses Dokument und diese Filterkombination gefunden wurden.
- „weight_d“ – eine reelle Zahl, die als Multiplikator verwendet wird, um die Punktzahl dieser Dokumente zu erhöhen.
- „tz_timestamp_txt“ – alle Zeitstempel der Rohsignale, gespeichert als Liste von Strings.
Der folgende Screenshot zeigt die aggregierten Signale für die Suche nach „netgear“. Es gab 3 Rohsignale, bei denen die Suchanfrage „netgear“ und eine Reihe von Kategorieauswahlen zu einem Klick auf den Artikel mit der ID „1208844“ führten:
Verwendung von Klick-Signalen in einer Fusion Query Pipeline
Die Abfrage-Pipelines von Fusion nehmen als Eingabe eine Reihe von Suchbegriffen und verarbeiten diese in Solr-Abfragen. Das Suchfenster der Fusion-Benutzeroberfläche verfügt über ein Steuerelement, mit dem Sie die Verarbeitungspipeline auswählen können. Im folgenden Screenshot der Sammlung „bb_catalog“ befindet sich das Steuerelement für die Abfrage-Pipeline direkt unter dem Eingabefeld für die Suche. Hier ist die Pipeline „bb_catalog-default“ ausgewählt (gelb eingekreist):
Die vorkonfigurierten Standard-Abfrage-Pipelines bestehen aus 3 Stufen:
- Eine Suchfeld-Abfragestufe, mit der Sie allgemeine Solr-Abfrageparameter definieren können. Die anfängliche Konfiguration legt fest, dass die 10 Dokumente mit der höchsten Punktzahl zurückgegeben werden sollen.
- Eine Facettenabfragestufe, die die Facetten definiert, die als Teil der Solr-Suchergebnisse zurückgegeben werden sollen. In den anfänglichen Standardeinstellungen sind keine Facettenfeldnamen angegeben.
- Eine Solr-Abfragestufe, die ein Abfrageobjekt in eine Solr-Abfrage umwandelt und die Anfrage an Solr sendet. In der Standardkonfiguration ist die HTTP-Methode als POST-Anfrage festgelegt.
Damit die textbasierte Suche in der Sammlung „bb_catalog“ wie erwartet funktioniert, muss die Abfragestufe Suchfeld so konfiguriert werden, dass die Felder, die relevanten Text enthalten, angegeben werden. Für die meisten der 1,2 Millionen Produkte im Produktkatalog ist der Artikelname, der sich im Feld „name_t“ befindet, das einzige Feld, das für eine Freitextsuche geeignet ist. Der folgende Screenshot zeigt, wie Sie dieses Feld zur Stufe Suchfelder hinzufügen, indem Sie die Abfrage-Pipeline über die Fusion 2-Benutzeroberfläche bearbeiten:
Das Suchfeld auf der rechten Seite zeigt die Ergebnisse einer Suche nach „ipad“ an. Es gab 1.359 Treffer für diese Abfrage, was die Anzahl der Artikel, bei denen es sich um ein Apple iPad handelt, weit übersteigt. Die Artikel mit den besten Ergebnissen enthalten „iPad“ im Titel, manchmal sogar zweimal, aber das sind alles iPad-Zubehörteile, nicht das Gerät selbst.
Empfehlung Boosting Abfragestufe
Eine Stufe der Empfehlungserweiterung verwendet aggregierte Signale, um Elemente in der Menge der Suchergebnisse selektiv zu erweitern. Der folgende Screenshot zeigt die Ergebnisse der gleichen Suche, nachdem die Abfrage-Pipeline um eine Stufe für das Recommendations Boosting ergänzt wurde:
Das Bedienfeld Pipeline bearbeiten auf der linken Seite zeigt die aktualisierte Abfrage-Pipeline „bb_catalog-default“ nach dem Hinzufügen einer Stufe „Recommendations Boosting“. Alle Parametereinstellungen für diese Phase wurden auf ihren Standardwerten belassen. Insbesondere werden die Recommendations Boosts auf das Feld „id“ angewendet. Das Suchfeld auf der rechten Seite zeigt die aktualisierten Ergebnisse für die Suchanfrage „ipad“. Die drei relevantesten Artikel sind nun für Apple iPads. Es handelt sich um iPad 2-Modelle, da der hier verwendete Klickdatensatz auf Logfile-Daten aus dem Jahr 2011 basiert und das iPad 2 zu diesem Zeitpunkt das neueste iPad auf dem Markt war. Es gab mehr Klicks für die 16 GB iPads als für das teurere 32 GB Modell und für die Farbe Schwarz als für die Farbe Weiß.
Ein Blick unter die Haube
Unter der Haube nutzt Fusion natürlich die großartige Leistung von Solr. Um zu sehen, wie das funktioniert, zeige ich sowohl die Fusion-Abfrage als auch das JSON der Solr-Antwort. Um die Fusion-Abfrage anzuzeigen, gehe ich in die Konfiguration der Suchoberfläche, ändere die Einstellungen unter „Allgemein“ und aktiviere die Option „Abfrage-URL anzeigen“. Um die Solr-Antwort im JSON-Format anzuzeigen, ändere ich die Anzeigesteuerung von „Ergebnisse“ auf „JSON“.
Der folgende Screenshot zeigt die Suchanzeige der Fusion UI für „ipad“:
Die über das Suchfeld der Fusion-Benutzeroberfläche eingegebene Abfrage „ipad“ wird in die folgende Anfrage umgewandelt, die an die Fusion REST-API gesendet wird:
/api/apollo/query-pipelines/bb_catalog-default/collections/bb_catalog/select?fl=*,score&echoParams=all&wt=json&json.nl=arrarr&sort&start=0&q=ipad&debug=true&rows=10
Diese Anfrage an die
"parsedquery": "(+DisjunctionMaxQuery((name_t:ipad)) id:1945531^4.0904393 id:2339322^1.5108471 id:1945595^1.0636971 id:1945674^0.4065684 id:2842056^0.3342921 id:2408224^0.4388061 id:2339386^0.39254773 id:2319133^0.32736558 id:9924603^0.1956079 id:1432551^0.18906432)/no_coord"
Der äußere Teil dieses Ausdrucks, „( … )/no_coord“, ist ein Berichtsdetail, das anzeigt, dass die Solr-Funktion „coord scoring“ nicht verwendet wurde.
Der eingeschlossene Ausdruck besteht aus:
- Die Suche: „+DisjunctionMaxQuery(name_t:ipad)“.
- Eine Reihe von selektiven Boosts, die auf die Suchergebnisse angewendet werden
Der Feldname „name_t“ wird von der Gruppe der Suchfelder geliefert, die in der Abfragestufe Suchfelder angegeben wurde. (Hinweis: Wenn keine Suchfelder angegeben sind, wird der Standardsuchfeldname „text“ verwendet. Da die Dokumente in der Sammlung „bb_catalog“ kein Feld mit dem Namen „text“ enthalten, muss diese Stufe mit dem entsprechenden Satz von Suchfeldern konfiguriert werden).
Die Stufe Recommendations Boosting wurde mit den Standardparametern konfiguriert:
- Anzahl der Empfehlungen: 10
- Anzahl von Signalen: 100
Es wurden 10 Dokumente mit den IDs ( 1945531, 2339322, 1945595, 1945674, 2842056, 2408224, 2339386, 2319133, 9924603, 1432551 ) verstärkt. Dieser Satz von 10 Dokumenten repräsentiert Dokumente, die mindestens 100 Klicks hatten, bei denen „ipad“ in der Suchanfrage des Benutzers vorkam. Der Boost-Faktor ist eine Zahl, die aus den aggregierten Signalen der Stufe Recommendation Boosting abgeleitet wird. Wenn diese Dokumente den Begriff „name_t:ipad“ enthalten, dann werden sie geboostet. Wenn diese Dokumente den Begriff nicht enthalten, werden sie von der Solr-Abfrage nicht zurückgegeben.
Zusammenfassend lässt sich sagen, dass die Hinzufügung der Stufe Recommendations Boosting zu einer Solr-Abfrage führt, bei der selektive Boosts auf 10 Dokumente angewendet werden, die auf Clickstream-Informationen aus einer undifferenzierten Reihe früherer Suchen basieren. Die Qualität der Suchergebnisse verbessert sich dadurch dramatisch.
Noch bessere Suche
Die Erweiterung der Abfrage-Pipeline um weitere Verarbeitungsschritte ermöglicht benutzerspezifische und suchspezifische Verfeinerungen. Wie die Stufe Recommendations Boosting nutzen auch diese komplexeren Abfrage-Pipelines die ausdrucksstarke Abfragesprache von Solr, die flexible Auswertung und die blitzschnelle Suche und Indizierung. Fusion-Abfrage-Pipelines und aggregierte Signale geben Ihnen die Werkzeuge an die Hand, die Sie benötigen, um das Sucherlebnis der Benutzer schnell zu verbessern.