Die Standard-Suchsyntax von Lucene
[ Seminar "Java und Werkzeuge für das Web" ] ...
[ Inhaltsverzeichnis ] ...
[ zurück ] ...
[ weiter ] ...
[ Links und Literaturverzeichnis ]
[ eMail an den Autor ]
Übersicht: Die Standard-Suchsyntax von Lucene
Lucene unterstützt standardmäßig reichhaltige Suchoptionen.
Allerdings besteht auch die Möglichkeit, eine eigene Suchsyntax zu entwickeln.
Eine Suchanfrage wird in Ausdrücke und Operatoren unterteilt.
Ein einzelner Ausdruck ist ein Wort wie z. B. "Hallo".
Eine Phrase ist eine Gruppe von Wörtern, von Anführungszeichen umschlossen, wie "Hallo Du".
Mehrere Ausdrücke können mit Hilfe boolescher Operatoren verbunden werden.
Lucene unterstützt Felddaten (z. B. Dokumenttitel und Inhalt). Bei einer Suchanfrage kann man entweder ein Feld spezifizieren oder man benutzt das Standardeld.
Die Feldnamen sind implementationsspezifisch.
Um in einem bestimmten Feld zu suchen, kann man den Feldnamen, gefolgt von einem Doppelpunkt und dem Suchausdruck angeben. Ein Beispiel:
"title:index AND text:hallo".
Ist "text" das Standardfeld, kann man auch
"title:index AND hallo"
eingeben.
Beachte: Das Feld gilt nur für den direkt folgenden Ausdruck, bei
"title:Titel Nummer 1"
gilt das Feld " title" nur für das Wort " Titel".
Lucene erlaubt Wildcard-Suche für ein oder mehrere Zeichen.
Um einen Platzhalter für ein einzelnes Zeichen anzugeben, wird ein "?" benutzt.
te?t
würde nach allen Wörtern wie "test" oder "text" suchen.
Um ein Platzhalter für mehrere Zeichen anzugeben, wird ein "*" benutzt.
test*
würde nach allen Wörtern wie "test" oder "tester" suchen.
Beachte: Beide Wildcards können sowohl innerhalb, als auch am Ende der Ausdrucks stehen, nicht jedoch am Beginn.
Lucene unterstützt undeutliche Suche
(Levenshtein Distanz Algorithmus).
Um eine undeutliche Suche zu formulieren, benutzt man das Tilde-Symbol ("~") am Ende eines einzelnen Wortes.
lachen~
würde Wörter wie "lachen", "wachen" oder auch "Laschen" finden.
Beachte: Ausdrücke, die über die Fuzzy-Suche gefunden wurden, werden automatisch mit einem Verstärkungsfaktor von 0,2
gewichtet.
Lucene erlaubt das Suchen von Wörtern, die eine bestimmte maximale Distanz voneinander entfernt sind.
Um eine Distanzsuche zu formulieren, muss das Tilde-Symbol ("~"), gefolgt von der Anzahl der Wörter, die diese maximal voneinander entfernt sein dürfen, hinter
dem Audruck angegeben werden.
"Guten wiedersehen"~10
würde nach den Wörtern "Guten" und "wiedersehen" suchen, die höchstens 10 Wörter voneinander entfernt liegen dürfen.
Lucene erlaubt es, einen Ausdruck mit einem Verstärkungsfaktor zu versehen, was sich dann auf die Reihenfolge der Ergebnisse auswirkt.
Um einem Ausdruck ein Verstärkungsfaktor zuzuordnen, wird das "^"-Symbol, gefolgt von dem Verstärkungsfaktor hinter dem Ausdruck angegeben.
hallo^4 du
würde bedeuten, dass Ergebnisse, die das Wort "hallo" enthalten, viermal so stark gewichtet werden, wie solche, die das Wort "du" enthalten.
Auch Phrasen (Ausdrücke, die aus mehreren Wörtern bestehen) können mit einem Verstärkungsfaktor versehen werden.
Der Standardfaktor ist 1.
Verstärkungsfaktoren müssen immer positiv sein, sie können aber kleiner als 1 sein.
Es können boolesche Operatoren, wie und, oder, usw. angegeben werden, um die Suche zu spezifizieren.
Sollen zwei Ausdrücke ODER-verknüpft werden, so ist dazwischen ein "OR" zu schreiben, oder aber gar nichts, da die ODER- die Standardverknüpfung ist.
hallo OR du
oder aber
hallo du
Sollen zwei Ausdrücke UND-verknüpft werden, so ist dazwischen ein "AND", oder aber vor beide Ausdrücke ein "+"-Zeichen zu schreiben.
hallo AND du
oder aber
+hallo +du
Soll z. B. das Wort "hallo" unbedingt vorkommen, das Wort "du" aber nicht unbedingt, so ist
+hallo du
zu schreiben.
Es können auch negierende boolesche Operatoren angegeben werden.
Um anzugeben, dass ein Ausdruck nicht vorkommen soll, ist ein NOT, oder aber ein Minuszeichen ("-") vor dem Ausdruck zu schreiben.
hallo NOT du
bedeutet, dass "hallo", nicht aber "du" vorkommen soll.
Beachte: der NOT-Operator kann nicht nur mit einem Ausdruck benutzt werden, wie bei
NOT "hallo du"
Elemente können gruppiert werden.
Dazu werden Klammern mit den üblichen Regeln benutzt:
(hallo OR du) AND ich
sucht alle Dokumente, in denen "ich" vorkommt, sowie "hallo" oder "du".
Auch Zeichen, die für die Suchsyntax reserviert werden, können in der Suche mit angegeben werden.
Ein Backslash ("\") vor einem solchen Zeichen bewirkt, dass es nicht fü die Syntax interpretiert, sondern in den Suchwausdruck einbezogen wird:
\(1\+1\)\:2
bedeutet, dass genau nach "(1+1):2" gesucht werden soll.
[ Seminar "Java und Werkzeuge für das Web" ] ...
[ Inhaltsverzeichnis ] ...
[ zurück ] ...
[ oben ] ...
[ weiter ] ...
[ Links und Literaturverzeichnis ]
[ eMail an den Autor ]