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:
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.
curl http: // localhost: 8983/solr/cars/query?q =*:*
curl http: // localhost: 8983/solr/cars/query?q = id: 5
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 '
curl http: // localhost: 8983/solr/cars/query -d '
q =*:*&
sort = price desc &
FL = Make, Modell, Preis '
curl http: // localhost: 8983/solr/cars/query -d '
q =*:*&
Zeilen = 5 &
sort = price desc &
FL = Make, Modell, Preis '
curl http: // localhost: 8983/solr/cars/query -d '
q =*:*&
Zeilen = 5 &
sort = price desc &
FL = Make, Modell, Preis, Punktzahl '
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