Einführung in Apache Solr. Teil 2 Abfragen von Solr

Einführung in Apache Solr. Teil 2 Abfragen von Solr
Apache Solr [1] ist ein in Java geschriebenes Suchmaschinen -Framework und basiert auf der Lucene -Suchbibliothek [6]. Im vorherigen Artikel haben wir Apache SolR auf dem bald veröffentlichten Debian GNU/Linux 11 eingerichtet, einen einzelnen Datenkern initiiert, Beispieldaten hochgeladen und gezeigt, wie eine grundlegende Suche innerhalb des Datensatzes mit einem einfachen Anfrage.

Dies ist ein Follow-up-Artikel zum vorherigen. Wir behandeln die Abfrage, formulieren Sie komplexere Suchkriterien mit unterschiedlichen Parametern und verstehen die verschiedenen Webformen der Apache Solr Query -Seite. Außerdem werden wir diskutieren, wie das Suchergebnis mit verschiedenen Ausgabeformaten wie XML, CSV und JSON verarbeitet werden kann.

Abfrage Apache Solr

Apache Solr wurde als Webanwendung und -dienst konzipiert, der im Hintergrund ausgeführt wird. Das Ergebnis besteht. Es gibt zwei Optionen - über Dashboard/Web -Schnittstelle oder eine API durch Senden einer entsprechenden Anforderung.

Es ist üblich, die zu verwenden erste Wahl zu Testzwecken und nicht zum regulären Zugang. Die folgende Abbildung zeigt das Dashboard aus der Benutzeroberfläche von Apache Solr Administration mit den verschiedenen Abfrageformularen im Webbrowser Firefox.

Wählen Sie im Menü im Feld Kernauswahl zunächst den Menüeintrag „Abfrage“ aus. Als nächstes zeigt das Dashboard mehrere Eingangsfelder wie folgt an:

  • Anfrage Handler (QT):
    Definieren Sie, welche Art von Anfrage Sie an Solr senden möchten. Sie können zwischen den Standardanforderungen Handlern "/ausgewählt" (Abfrage indexierte Daten), "/aktualisieren" (indexierte Daten aktualisieren) und "/löschen" (entfernen Sie die angegebenen indizierten Daten) oder eine selbstdefinierte auswählen.
  • Abfrageereignis (Q):
    Definieren Sie, welche Feldnamen und Werte ausgewählt werden sollen.
  • Filterabfragen (FQ):
    Beschränken Sie die Dokumente, die zurückgegeben werden können, ohne die Dokumentenpartitur zu beeinflussen.
  • Sortieren Sie (sortieren):
    Definieren Sie die Sortierreihenfolge der Abfrageergebnisse entweder aufsteigend oder zum Abstieg
  • Ausgabefenster (Start und Zeilen):
    Begrenzen Sie den Ausgang auf die angegebenen Elemente
  • Feldliste (FL):
    Begrenzt die in einer Abfrageaktion enthaltenen Informationen auf eine bestimmte Liste von Feldern.
  • Ausgangsformat (WT):
    Definieren Sie das gewünschte Ausgangsformat. Der Standardwert ist JSON.

Wenn Sie auf die Schaltfläche Ausführen von Abfragen klicken, wird die gewünschte Anfrage ausgeführt. Für praktische Beispiele schauen Sie unten einen Blick darauf.

Als die zweite Option, Sie können eine Anfrage mit einer API senden. Dies ist eine HTTP -Anfrage, die von jeder Anwendung an Apache Solr gesendet werden kann. Solr verarbeitet die Anfrage und gibt eine Antwort zurück. Ein Sonderfall darin besteht darin, eine Verbindung zu Apache Solr über Java API herzustellen. Dies wurde an ein separates Projekt namens SolrJ [7] - eine Java -API, ausgelagert, ohne eine HTTP -Verbindung zu benötigen.

Abfragesyntax

Die Abfragesyntax wird am besten in [3] und [5] beschrieben. Die verschiedenen Parameternamen entsprechen direkt den Namen der Eintragsfelder in den oben erläuterten Formularen. Die folgende Tabelle listet sie sowie praktische Beispiele auf.

Abfrageparameterindex

Parameter Beschreibung Beispiel
Q Der Hauptabfrageparameter von Apache Solr - die Feldnamen und Werte. Ihre Ähnlichkeit bewertet das Dokument zu den Begriffen in diesem Parameter. ID: 5
Autos:*Adilla*
*: X5
fq Beschränken Sie das Ergebnis auf die Superset -Dokumente, die dem Filter übereinstimmen, beispielsweise über den Funktionsbereich Abfrage -Parser Modell
Id, Modell
Start Offsets für Seitenergebnisse (beginnen). Der Standardwert dieses Parameters beträgt 0. 5
Reihen Offsets für Seitenergebnisse (Ende). Der Wert dieses Parameters ist standardmäßig 10 15
Sortieren Es spezifiziert die Liste der von Commas getrennten Felder, basierend darauf, welche Abfrageergebnisse sortiert werden sollen Modell ASC
fl Es gibt die Liste der Felder an, die für alle Dokumente im Ergebnissatz zurückgegeben werden soll Modell
Id, Modell
wt Dieser Parameter repräsentiert die Art des Antwortschreibers, den wir das Ergebnis anzeigen wollten. Der Wert davon ist standardmäßig JSON. JSON
xml

Die Suchanfragen werden über die HTTP -Anforderung mit der Abfragezeichenfolge im q -Parameter durchgeführt. In den folgenden Beispielen wird klargestellt, wie dies funktioniert. Im Gebrauch wird Curl zum Senden der Abfrage an Solr, die lokal installiert ist.

  • Abrufen Sie alle Datensätze von den Kernautos ab
    curl http: // localhost: 8983/solr/cars/query?q =*:*
  • Rufen Sie alle Datensätze von den Kernautos mit einer ID von 5 ab
    curl http: // localhost: 8983/solr/cars/query?q = id: 5
  • Rufen Sie das Feldmodell von allen Datensätzen der Kernautos ab
    Option 1 (mit entkommenem &):
    curl http: // localhost: 8983/solr/cars/query?q = id:*\ & fl = Modell

    Option 2 (Abfrage in Single Ticks):

    curl 'http: // localhost: 8983/solr/cars/query?q = id:*& fl = Modell '
  • Abrufen Sie alle Datensätze der Kernautos in absteigender Reihenfolge sortiert und geben Sie nur die Felder aus, nur Modell und Preis (Version in Single Ticks):
    curl http: // localhost: 8983/solr/cars/query -d '
    q =*:*&
    sort = price desc &
    FL = Make, Modell, Preis '
  • Abrufen Sie die ersten fünf Datensätze der Kernautos in absteigender Reihenfolge nach Preis und geben Sie die Felder nur aus (Version in Einzel -Ticks) aus:
    curl http: // localhost: 8983/solr/cars/query -d '
    q =*:*&
    Zeilen = 5 &
    sort = price desc &
    FL = Make, Modell, Preis '
  • Abrufen Sie die ersten fünf Datensätze der Kernautos in absteigender Reihenfolge ab und geben Sie die Felder aus, modellieren und preis sowie deren Relevanzbewertung (Version in Einzel -Ticks):
    curl http: // localhost: 8983/solr/cars/query -d '
    q =*:*&
    Zeilen = 5 &
    sort = price desc &
    FL = Make, Modell, Preis, Punktzahl '
  • Geben Sie alle gespeicherten Felder sowie die Relevanz -Punktzahl zurück:
    curl http: // localhost: 8983/solr/cars/query -d '
    q =*:*&
    FL =*, Punktzahl '

Darüber hinaus können Sie Ihren eigenen Anforderungshandler definieren, um die optionalen Anforderungsparameter an den Abfrage -Parser zu senden, um zu steuern, welche Informationen zurückgegeben werden.

Abfragen von Parser

Apache Solr verwendet einen sogenannten Abfrage -Parser - eine Komponente, die Ihre Suchzeichenfolge in bestimmte Anweisungen für die Suchmaschine übersetzt. Ein Abfrage -Parser steht zwischen Ihnen und dem Dokument, nach dem Sie suchen.

Solr verfügt über eine Vielzahl von Parser -Typen, die sich in der Art und Weise unterscheiden, wie eine eingereichte Abfrage bearbeitet wird. Der Standard -Abfrage -Parser eignet sich gut für strukturierte Abfragen, ist jedoch weniger tolerant gegenüber Syntaxfehlern. Gleichzeitig werden sowohl der Dismax- als auch der erweiterte Dismax-Abfrage-Parser für natürliche Sprachanfragen optimiert. Sie sind so konzipiert, dass sie einfache Phrasen verarbeiten, die von Benutzern eingegeben wurden.

Darüber hinaus bietet SolR auch sogenannte Funktionsabfragen, mit denen eine Funktion mit einer Abfrage kombiniert werden kann, um eine bestimmte Relevanzbewertung zu generieren. Diese Parser werden als Funktionsabfrage Parser und Funktionsbereichsabfrage -Parser bezeichnet. Das folgende Beispiel zeigt den letzteren, um alle Datensätze für „BMW“ (im Datenfeld gespeichert) mit den Modellen von 318 bis 323 auszuwählen:

curl http: // localhost: 8983/solr/cars/query -d '
q = make: bmw &
FQ = Modell: [318 bis 323] '

Nachbearbeitung von Ergebnissen

Das Senden von Abfragen an Apache SolR ist ein Teil, aber das Suchergebnis des anderen nachzuarbeiten. Zunächst können Sie zwischen verschiedenen Antwortformaten wählen - von JSON bis XML, CSV und einem vereinfachten Ruby -Format. Geben Sie einfach den entsprechenden WT -Parameter in einer Abfrage an. Das nachstehende Codebeispiel zeigt dies zum Abrufen des Datensatzes im CSV -Format für alle Elemente mit Curl mit entsiedelten &::

curl http: // localhost: 8983/solr/cars/query?q = id: 5 \ & wt = csv

Die Ausgabe ist eine von Kommas getrennte Liste wie folgt:

Um das Ergebnis als XML -Daten zu erhalten, aber die beiden Ausgabefelder machen und modellieren nur die folgende Abfrage:

curl http: // localhost: 8983/solr/cars/query?q =*:*\ & fl = make, modell \ & wt = xml

Die Ausgabe ist unterschiedlich und enthält sowohl den Antwortheader als auch die tatsächliche Antwort:

WGet druckt einfach die empfangenen Daten zu STDOut. Auf diese Weise können Sie die Antwort mithilfe von Standard-Befehlszeilen-Tools nacharbeiten. Um einige aufzulisten, enthält dies JQ [9] für JSON, XSLTPROC, Xidel, XMLStarlet [10] für XML sowie CSVKit [11] für CSV -Format.

Abschluss

Dieser Artikel zeigt verschiedene Möglichkeiten zum Senden von Abfragen an Apache Solr und erklärt, wie das Suchergebnis verarbeitet wird. Im nächsten Teil lernen Sie, wie Sie Apache Solr verwenden, um in PostgreSQL, einem relationalen Datenbankverwaltungssystem, zu suchen.

Über die Autoren

Jacqui Kabeta ist Umweltschützer, begeisterter Forscher, Trainer und Mentor. In mehreren afrikanischen Ländern hat sie in der IT -Branche und in der NGO -Umgebung gearbeitet.

Frank Hofmann ist IT -Entwickler, Trainer und Autor und arbeitet lieber aus Berlin, Genf und Kapstadt. Co-Autor des Debian-Paket-Management-Buches bei DPMB erhältlich.Org

Links und Referenzen

  • [1] Apache Solr, https: // Lucene.Apache.org/Solr/
  • [2] Frank Hofmann und Jacqui Kabeta: Einführung in Apache Solr. Teil 1, http: // linuxhint.com
  • [3] Yonik Seelay: Solr Query Syntax, http: // yonik.com/solr/query-syntax/
  • [4] Yonik Seelay: Solr Tutorial, http: // yonik.com/Solr-Tutorial/
  • [5] Apache Solr: Abfragen von Daten, TutorialPoint, https: // www.Tutorialspitze.com/apache_solr/apache_solr_querying_data.htm
  • [6] Lucene, https: // lucene.Apache.org/
  • [7] Solrj, https: // lucene.Apache.org/Solr/Guide/8_8/Verwendung von SOLRJ.html
  • [8] Curl, https: // curl.se/
  • [9] JQ, https: // github.com/stedolan/jq
  • [10] xmlstarlet, http: // xmlstar.SourceForge.Netz/
  • [11] csvkit, https: // csvkit.Readthedocs.io/en/letztes/