Kontextfilterung mit Solr Suggester

„Q: What did the Filter Query say to the Solr Suggester? Einführung Die verfügbare Literatur über den Solr Suggester konzentriert…

"Q: What did the Filter Query say to the Solr Suggester?

Einführung

Die verfügbare Literatur über den Solr Suggester konzentriert sich hauptsächlich auf die oberflächliche Konfiguration und allgemeine Anwendungsfälle. Dieser Artikel bietet eine gründliche Einführung in den Solr Suggester und erörtert seine Geschichte, sein Design, seine Implementierung und bietet sogar einige umfassende Beispiele für seine Verwendung.

Dieser Blog-Beitrag soll die Vielseitigkeit des Solr Suggesters und den Prozess der Erstellung von kontextgefilterten Vorschlägen in Solr aufzeigen.

Ein wenig Kontext…

Angenommen, Sie haben eine Sammlung, die aus verschiedenen Datenquellen besteht. Für dieses Beispiel wählen wir zwei der Datenquellen, „datasource_A“ und „datasource_B“. Das Ziel ist es, Vorschläge für Ihre Suchanwendung zu aktivieren, aber nur Vorschläge für Dokumente aus Datenquelle_A zu liefern und alle Dokumente aus Datenquelle_B auszuschließen.

Geben Sie „suggest.cfq“ ein, den Parameter, der bis zu einem gewissen Grad den bekannten fq-Parameter von Solr emuliert. Der weit verbreitete fq-Parameter filtert jedoch nicht die Ergebnisse, die von der suggest-Komponente ausgegeben werden. Wenn Sie also eine Abfrage wie /suggest?q=do&fq=_lw_data_source_s:datasource_A ist im Wesentlichen gleichbedeutend mit /suggest?q=dound ignoriert die Filterabfrage vollständig.

In der Solr-Dokumentation finden Sie einen Hinweis darauf, dass die Kontextfilterung (suggest.cfq) derzeit nur von AnalyzingInfixLookupFactory und BlendedInfixLookupFactory unterstützt wird, und auch nur dann, wenn ein Document*Dictionary zugrunde liegt. Alle anderen Implementierungen geben ungefilterte Treffer zurück, als ob keine Filterung angefordert worden wäre.

Darf ich eine Lösung vorschlagen?

Im folgenden Beispiel erstelle ich eine Fusion-Sammlung mit dem Namen suggestTest und weise ihr zwei Datenquellen zu: „art“ und „tv“ In Fusion werden Datenquellen durch ein Feld _lw_data_source_s unterschieden. Nachdem ich die Dokumente beider Datenquellen indiziert habe, möchte ich die Vorschläge für eine der Datenquellen aktivieren, nicht aber für die andere.

Ich habe ein Skript erstellt, das den Prozess, den ich gleich beschreiben werde, automatisiert – Sie können das Skript ausführen, indem Sie das folgende Repo klonen: https://github.com/essiequoi/suggestTest.git

SCHRITT 1

Stellen Sie sicher, dass Sie die folgenden Umgebungsvariablen setzen, da sonst die Standardeinstellungen verwendet werden:

$FUSION_HOME (z.B.: $HOME/Lucid/fusion/fusion2.4.3/)
$FUSION_API_BASE (z.B.: http://localhost:8764/api/apollo)
$SOLR_API_BASE (z.B.: http://localhost:8983/solr)
$FUSION_API_CREDENTIALS (z.B.: admin:password123)
$ZK_HOST (z.B.: localhost:9983)

SCHRITT ZWEI

Erstellen Sie die suggestTest-Sammlung

SCHRITT DREI

Bearbeiten Sie solrconfig.xml, um Vorschläge zu aktivieren. Wie bereits erwähnt, haben Sie die Wahl, ob Sie die AnalyzingInfixLookupFactory oder die BlendedInfixLookupFactory als Wörterbuchimplementierung verwenden. In meinem Beispiel verwende ich die erstere. Wir werden auf das Feld title hinweisen. Der Parameter contextField gibt das Feld an, nach dem Sie filtern werden. Ich verwende das Feld _lw_data_source_s, das den Namen der Fusion-Datenquellen enthält.

SCHRITT VIER

Erstellen Sie die Datenquellen „art“ und „tv“. Ich verwende den lokalen Dateisystem-Connector für beide, aber der Connector-Typ ist in diesem Beispiel beliebig. Und da ich CSV-Dateien indiziere, verwende ich die standardmäßige CSV-Index-Pipeline, die mit Fusion geliefert wird. Ich indiziere die folgenden Dokumente:

kunst.csv

tv.csv

SCHRITT FÜNF

Führen Sie die Datenquellen aus. Sobald beide Datenquellen ausgeführt wurden, sollten Sie insgesamt 6 Dokumente in Ihrer gesamten Sammlung haben.

SCHRITT SECHS

Bearbeiten Sie in der Abfrage-Pipeline suggestTest-default die Stufe Query Solr, um den /suggest requestHandler zuzulassen.

SCHRITT SIEBEN

Erstellen Sie den Suggestor mit http://{host}:8764/api/apollo/query-pipelines/suggestTest-default/collections/suggestTest/suggest?suggest.build=true . Der Status „0“ bedeutet, dass der Suggestor erfolgreich erstellt wurde.

SCHRITT ACHT

Fragen Sie die Sammlung (mit dem /suggest Handler) nach „ba“ ab und beobachten Sie die Antwort. Als nächstes fragen Sie nach „be“ und dann nach „ch“. Sie sollten für jede Abfrage 2 Vorschläge zurückerhalten.

SCHRITT NEUN

Nehmen wir an, wir möchten Vorschläge für „ba“ erhalten, aber nur solche, die aus der Datenquelle „art“ stammen. Die folgende Abfrage schlägt fehl: http://{host}:8764/api/apollo/query-pipelines/suggestTest-default/collections/suggestTest/suggest?suggest.q=ba&fq=_lw_data_source_s:art . Wie Sie sehen können, werden immer noch Vorschläge aus beiden Datenquellen zurückgegeben. Wenn Sie den Parameter suggest.cfq verwenden und die entsprechende Datenquelle als Wert eingeben, erhalten Sie das richtige Ergebnis.

SCHRITT ZEN

Suchen Sie weiter!

 

Einige bekannte Probleme

Es ist wichtig zu wissen, dass die folgenden JIRAs in Bezug auf den suggest.cfq-Parameter existieren, von denen keines direkt den oben genannten Anwendungsfall betrifft:

SOLR-8928 – „suggest.cfq funktioniert nicht mit DocumentExpressionDictionaryFactory/weightExpression“

SOLR-7963 – „Abfrage des Suggester-Kontextfilters, um die Abfrage lokaler Parameter zu akzeptieren“

SOLR-7964 – „suggest.highlight=true funktioniert nicht bei der Verwendung von Kontextfilter-Abfragen“

 

Fazit

Der Solr Suggester ist von Haus aus in der Lage, selbst die speziellsten Anwendungsfälle zu lösen. Wenn Sie Ihre Konfigurationsdateien ein wenig anpassen und ebenso viel experimentieren, können Sie Ihre Anwendung für eine Vielzahl von Möglichkeiten öffnen.

 

A: Con-text me some time.

You Might Also Like

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

Lucidworks Kernpakete: Branchenoptimierte KI-Such- und Personalisierungslösungen

Entdecken Sie unsere umfassenden Core Packages, die Analytics Studio, Commerce Studio und...

Read More

Quick Links