# 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.

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.

Abfrage nach mehreren Worten

    hello dolly

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

Worte in einer Abfrage erzwingen

    +hello dolly

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

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.

Abfrage nach Phrasen

    "hello dolly"

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

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.

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.

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.

Abfrage mit der Wildcard "?"

    te?t

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

Abfrage mit dem Wildcard "*"

    test*

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

Abfrage nach einem inklusiven Bereich von Ausdrücken

    mod_date:[20020101 TO 20030101]

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

Abfrage nach einem exklusiven Bereich von Ausdrücken

    title:{Aida to Carmen}

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

Undeutliche Suchen

    roam~

Sucht undeutlich nach dem Word "roam".

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:

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