| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="learning.lucene.queries">
- <title>Unterstützte Abfragen</title>
- <para>
- <classname>Zend_Search_Lucene</classname> 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.
- </para>
- <para>
- Eine detailierte Beschreibung der Abfragesprache kann in der <link
- linkend="zend.search.lucene.query-language">Dokumentation der Komponente
- Zend_Search_Lucene</link> gefunden werden.
- </para>
- <para>
- Nachfolgend sind einige Beispiel von üblichen Abfragetypen und Strategien.
- </para>
- <example id="learning.lucene.queries.keyword">
- <title>Abfragen nach einem einfachen Wort</title>
- <programlisting language="text"><![CDATA[
- hello
- ]]></programlisting>
- <para>
- Sucht nach dem Wort "hello" durch alle Dokumentfelder.
- </para>
- </example>
- <note>
- <title>Standardmäßige Suchfelder</title>
- <para>
- Wichtige Notiz! Java Lucene sucht standardmäßig nur nach den "contents" Feldern, aber
- <classname>Zend_Search_Lucene</classname> sucht durch <emphasis>alle</emphasis> Felder.
- Dieses Verhalten kann geändert werden indem die Methode
- <methodname>Zend_Search_Lucene::setDefaultSearchField($fieldName)</methodname> verwendet
- wird.
- </para>
- </note>
- <example id="learning.lucene.queries.multiple-words">
- <title>Abfrage nach mehreren Worten</title>
- <programlisting language="text"><![CDATA[
- hello dolly
- ]]></programlisting>
- <para>
- Sucht nach zwei Worten. Beide Worte sind optional; zumindest eines von Ihnen muss im
- Ergebnis vorhanden sein.
- </para>
- </example>
- <example id="learning.lucene.queries.required-words">
- <title>Worte in einer Abfrage erzwingen</title>
- <programlisting language="text"><![CDATA[
- +hello dolly
- ]]></programlisting>
- <para>
- Sucht nach zwei Worten; "hello" wird benötigt, "dolly" ist optional.
- </para>
- </example>
- <example id="learning.lucene.queries.prohibited-words">
- <title>Wörter in abgefragten Dokumenten verhindern</title>
- <programlisting language="text"><![CDATA[
- +hello -dolly
- ]]></programlisting>
- <para>
- 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.
- </para>
- </example>
- <example id="learning.lucene.queries.phrases">
- <title>Abfrage nach Phrasen</title>
- <programlisting language="text"><![CDATA[
- "hello dolly"
- ]]></programlisting>
- <para>
- Suche nach der Phrase "hello dolly"; ein Dokument entspricht nur wenn der exakte String
- vorhanden ist.
- </para>
- </example>
- <example id="learning.lucene.queries.fields">
- <title>Abfrage nach spezifischen Feldern</title>
- <programlisting language="text"><![CDATA[
- title:"The Right Way" AND text:go
- ]]></programlisting>
- <para>
- Sucht die Phrase "The Right Way" im <property>title</property> Feld und das Wort "go"
- im <property>text</property> Feld.
- </para>
- </example>
- <example id="learning.lucene.queries.fields-and-document">
- <title>Abfrage nach speziellen Feldern sowie im kompletten Dokument</title>
- <programlisting language="text"><![CDATA[
- title:"The Right Way" AND go
- ]]></programlisting>
- <para>
- Sucht die Phrase "The Right Way" im Feld <property>title</property> und das Word "go"
- welches in irgendeinem Feld des Dokuments vorkommt.
- </para>
- </example>
- <example id="learning.lucene.queries.fields-and-document-alt">
- <title>Abfrage nach speziellen Feldern sowie im kompletten Dokument (alternativ)</title>
- <programlisting language="text"><![CDATA[
- title:Do it right
- ]]></programlisting>
- <para>
- Sucht nach dem Wort "Do" im Feld <property>title</property> und die Wörter "it" und
- "right" über alle Felder; jeder einzelne der entspricht führt zu einem passenden
- Dokument.
- </para>
- </example>
- <example id="learning.lucene.queries.wildcard-question">
- <title>Abfrage mit der Wildcard "?"</title>
- <programlisting language="text"><![CDATA[
- te?t
- ]]></programlisting>
- <para>
- Sucht nach Worten die dem Pattern "te?t" entsprechen, wobei "?" jedes einzelne Zeichen
- ist.
- </para>
- </example>
- <example id="learning.lucene.queries.wildcard-asterisk">
- <title>Abfrage mit dem Wildcard "*"</title>
- <programlisting language="text"><![CDATA[
- test*
- ]]></programlisting>
- <para>
- Sucht nach Worten welche dem Pattern "test*" entsprechen wobei "*" jede Sequenz von null
- oder mehr Zeichen entspricht.
- </para>
- </example>
- <example id="learning.lucene.queries.range-inclusive">
- <title>Abfrage nach einem inklusiven Bereich von Ausdrücken</title>
- <programlisting language="text"><![CDATA[
- mod_date:[20020101 TO 20030101]
- ]]></programlisting>
- <para>
- Sucht nach einem Bereich von Ausdrücken (inklusive).
- </para>
- </example>
- <example id="learning.lucene.queries.range-exclusive">
- <title>Abfrage nach einem exklusiven Bereich von Ausdrücken</title>
- <programlisting language="text"><![CDATA[
- title:{Aida to Carmen}
- ]]></programlisting>
- <para>
- Sucht nach einem Bereich von Ausdrücken (exklusive).
- </para>
- </example>
- <example id="learning.lucene.queries.fuzzy">
- <title>Undeutliche Suchen</title>
- <programlisting language="text"><![CDATA[
- roam~
- ]]></programlisting>
- <para>
- Sucht undeutlich nach dem Word "roam".
- </para>
- </example>
- <example id="learning.lucene.queries.boolean">
- <title>Boolsche Suchen</title>
- <programlisting language="text"><![CDATA[
- (framework OR library) AND php
- ]]></programlisting>
- <para>
- Boolsche Abfrage.
- </para>
- </example>
- <para>
- Alle unterstützten Abfragen können durch <classname>Zend_Search_Lucene</classname>'s
- <link linkend="zend.search.lucene.query-api">Abfrage Erstellungs API</link> erstellt werden.
- Weiters können Parsen von Abfrage und Abfrage Erstellung kombiniert werden:
- </para>
- <example id="learning.lucene.queries.combining">
- <title>Kombinieren von geparsted und erstellten Abfragen</title>
- <programlisting language="php"><![CDATA[
- $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 */);
- ]]></programlisting>
- </example>
- </sect1>
|