| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="learning.lucene.searching">
- <title>Suchen</title>
- <para>
- Suchen wird durch Verwendung der <methodname>find()</methodname> Methode durchgeführt:
- </para>
- <example id="learning.lucene.searching.search-example">
- <title>Den Index durchsuchen</title>
- <programlisting language="php"><![CDATA[
- $hits = $index->find($query);
- foreach ($hits as $hit) {
- printf("%d %f %s\n", $hit->id, $hit->score, $hit->title);
- }
- ]]></programlisting>
- </example>
- <para>
- Dieses Beispiel demonstriert die Verwendung von zwei speziellen Suchtreffer Eigenschaften -
- <property>id</property> und <property>score</property>.
- </para>
- <para>
- <property>id</property> ist ein interner Dokument Identifikator der im Lucene Index
- verwendet wird. Er kann in unterschiedlichen Operationen verwendet werden, inklusive dem
- Löschen eines Dokuments vom Index:
- </para>
- <example id="learning.lucene.searching.delete-example">
- <title>Löschen eines indizierten Dokuments</title>
- <programlisting language="php"><![CDATA[
- $index->delete($id);
- ]]></programlisting>
- </example>
- <para>
- Oder Empfangen eines Dokuments vom Index:
- </para>
- <example id="learning.lucene.searching.retrieve-example">
- <title>Empfangen eines indizierten Dokuments</title>
- <programlisting language="php"><![CDATA[
- $doc = $index->getDocument($id);
- ]]></programlisting>
- </example>
- <note id="learning.lucene.searching.identifiers">
- <title>Interne Dokument Identifikatoren</title>
- <para>
- Wichtiger Hinweis! Interne Dokument Identifikatoren können durch eine Index Optimierung
- oder den automatischen Optimierungsprozess geändert werden, aber Sie werden niemals bei
- der Ausführung eines einzelnen Skripts geändert solange die
- <methodname>addDocument()</methodname> (welche eine automatische Optimierungsprozedur
- beinhalten kann) oder die <methodname>optimize()</methodname> Methoden aufgerufen
- werden.
- </para>
- </note>
- <para>
- Das <property>score</property> Feld sind Trefferpunkte. Such Ergebnisse werden standardmäßig
- nach Trefferpunkten sortiert (die besten Ergebnisse werden als erstes zurückgegeben).
- </para>
- <para>
- Es ist auch möglich Ergebnissets anhand von spezifischen Feldwerten zu sortieren. Siehe die
- <link linkend="zend.search.lucene.searching.sorting">
- <classname>Zend_Search_Lucene</classname> Dokumentation</link> für mehr Details über
- diese Möglichkeit.
- </para>
- <para>
- Das Beispiel demonstriert auch eine Möglichkeit um auf gespeicherte Felder zugreifen zu
- können (z.B. <command>$hit->title</command>). Beim ersten Zugriff auf jede
- Treffer-Eigenschaft, die sich von <property>id</property> oder <property>score</property>
- unterscheidet, wird jedes dokumentierte gespeicherte Feld geladen, und die
- korrespondierenden Feldwerte werden zurückgegeben.
- </para>
- <para>
- Das verursacht eine Doppeldeutigkeit für Dokumente die Ihre eigenen <property>id</property>
- oder <property>score</property> Felder haben; als Ergebnis wird empfohlen diese Feldnamen
- nicht in gespeicherten Dokumenten zu verwenden. Trotzdem kann auf Sie über die
- <methodname>getDocument()</methodname> Methode zugegriffen werden:
- </para>
- <example id="learning.lucene.searching.id-score-fields">
- <title>Zugriff auf die originalen "id" und "score" Felder von Dokumenten</title>
- <programlisting language="php"><![CDATA[
- $id = $hit->getDocument()->id;
- $score = $hit->getDocument()->score;
- ]]></programlisting>
- </example>
- </sect1>
|