Unterstützte Abfragen

Zend_Search_Lucene und Java Lucene unterstützen eine mächtige Abfragesprache. Sie erlaubt das Suchen nach individuellen Ausdrücken, Phrasen, Bereichen von Ausdrücken; verwendung von Wildcards und Undeutliche (Fuzzy) Suchen; Kombination von Abfragen durch Verwendung boolscher Operatoren; und so weiter.

Eine detailierte Beschreibung der Abfragesprache kann in der Dokumentation der Komponente Zend_Search_Lucene gefunden werden.

Nachfolgend sind einige Beispiel von üblichen Abfragetypen und Strategien.

Beispiel 12. Abfragen nach einem einfachen Wort

hello

Sucht nach dem Wort "hello" durch alle Dokumentfelder.


Standardmäßige Suchfelder

Wichtige Notiz! Java Lucene sucht standardmäßig nur nach den "contents" Feldern, aber Zend_Search_Lucene sucht durch alle Felder. Dieses Verhalten kann geändert werden indem die Methode Zend_Search_Lucene::setDefaultSearchField($fieldName) verwendet wird.

Beispiel 13. Abfrage nach mehreren Worten

hello dolly

Sucht nach zwei Worten. Beide Worte sind optional; zumindest eines von Ihnen muss im Ergebnis vorhanden sein.


Beispiel 14. Worte in einer Abfrage erzwingen

+hello dolly

Sucht nach zwei Worten; "hello" wird benötigt, "dolly" ist optional.


Beispiel 15. Wörter in abgefragten Dokumenten verhindern

+hello -dolly

Sucht nach zwei Worten; "hello" wird benötigt, "dolly" ist verboten. Mit anderen Worten, wenn das Dokument auf "hello" passt aber das Wort "dolly" enthält wird es nicht im gefundenen Set zurückgegeben.


Beispiel 16. Abfrage nach Phrasen

"hello dolly"

Suche nach der Phrase "hello dolly"; ein Dokument entspricht nur wenn der exakte String vorhanden ist.


Beispiel 17. Abfrage nach spezifischen Feldern

title:"The Right Way" AND text:go

Sucht die Phrase "The Right Way" im title Feld und das Wort "go" im text Feld.


Beispiel 18. Abfrage nach speziellen Feldern sowie im kompletten Dokument

title:"The Right Way" AND  go

Sucht die Phrase "The Right Way" im Feld title und das Word "go" welches in irgendeinem Feld des Dokuments vorkommt.


Beispiel 19. Abfrage nach speziellen Feldern sowie im kompletten Dokument (alternativ)

title:Do it right

Sucht nach dem Wort "Do" im Feld title und die Wörter "it" und "right" über alle Felder; jeder einzelne der entspricht führt zu einem passenden Dokument.


Beispiel 20. Abfrage mit der Wildcard "?"

te?t

Sucht nach Worten die dem Pattern "te?t" entsprechen, wobei "?" jedes einzelne Zeichen ist.


Beispiel 21. Abfrage mit dem Wildcard "*"

test*

Sucht nach Worten welche dem Pattern "test*" entsprechen wobei "*" jede Sequenz von null oder mehr Zeichen entspricht.


Beispiel 22. Abfrage nach einem inklusiven Bereich von Ausdrücken

mod_date:[20020101 TO 20030101]

Sucht nach einem Bereich von Ausdrücken (inklusive).


Beispiel 23. Abfrage nach einem exklusiven Bereich von Ausdrücken

title:{Aida to Carmen}

Sucht nach einem Bereich von Ausdrücken (exklusive).


Beispiel 24. Undeutliche Suchen

roam~

Sucht undeutlich nach dem Word "roam".


Beispiel 25. Boolsche Suchen

(framework OR library) AND php

Boolsche Abfrage.


Alle unterstützten Abfragen können durch Zend_Search_Lucene's Abfrage Erstellungs API erstellt werden. Weiters können Parsen von Abfrage und Abfrage Erstellung kombiniert werden:

Beispiel 26. Kombinieren von geparsted und erstellten Abfragen

$userQuery = Zend_Search_Lucene_Search_QueryParser::parse($queryStr);

$query = new Zend_Search_Lucene_Search_Query_Boolean();
$query->addSubquery($userQuery, true  /* required */);
$query->addSubquery($constructedQuery, true  /* required */);