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).
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 */);