| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="learning.lucene.indexing">
- <title>Indizierung</title>
- <para>
- Indizierung wird durch das Hinzufügen eines neuen Dokuments zu einem bestehenden oder neuen
- Index durchgeführt:
- </para>
- <programlisting language="php"><![CDATA[
- $index->addDocument($doc);
- ]]></programlisting>
- <para>
- Es gibt zwei Wege Dokument Objekte zu erstellen. Der erste ist es manuell zu tun.
- </para>
- <example id="learning.lucene.indexing.doc-creation">
- <title>Manuelle Dokument Erstellung</title>
- <programlisting language="php"><![CDATA[
- $doc = new Zend_Search_Lucene_Document();
- $doc->addField(Zend_Search_Lucene_Field::Text('url', $docUrl));
- $doc->addField(Zend_Search_Lucene_Field::Text('title', $docTitle));
- $doc->addField(Zend_Search_Lucene_Field::unStored('contents', $docBody));
- $doc->addField(Zend_Search_Lucene_Field::binary('avatar', $avatarData));
- ]]></programlisting>
- </example>
- <para>
- Die zweite Methode ist das Laden von <acronym>HTML</acronym> oder von Microsoft Office 2007
- Dateien:
- </para>
- <example id="learning.lucene.indexing.doc-loading">
- <title>Laden vom Dokument</title>
- <programlisting language="php"><![CDATA[
- $doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
- $doc = Zend_Search_Lucene_Document_Docx::loadDocxFile($path);
- $doc = Zend_Search_Lucene_Document_Pptx::loadPptFile($path);
- $doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($path);
- ]]></programlisting>
- </example>
- <para>
- Wenn ein Dokument von einem der unterstützten Formate geladen wird, kann es trotzdem noch
- manuell mit einem neuen benutzerdefinierten Feld erweitert werden.
- </para>
- <sect2 id="learning.lucene.indexing.policy">
- <title>Indizierungs Policy</title>
- <para>
- Man sollte eine Indizierungs Policy im Architektur Design der eigenen Anwendung
- definieren.
- </para>
- <para>
- Man könnte eine auf-Wunsch Index Konfiguration benötigen (etwas wie ein
- <acronym>OLTP</acronym> System). In solchen Systemen wird pro Benutzeranfrage
- normalerweise ein Dokument hinzugefügt. Daher beeinflusst die
- <emphasis>MaxBufferedDocs</emphasis> Option das System nicht. Auf der anderen Seite ist
- <emphasis>MaxMergeDocs</emphasis> wirklich nützlich da es erlaubt die maximale
- Ausführungszeit des Skripts zu begrenzen. <emphasis>MergeFactor</emphasis> sollte auf
- einen Wert gesetzt werden der die Balance zwischen der durchschnittlichen
- Indizierungszeit (sie beeinflusst auch die durchschnittliche automatische
- Optimierungszeit) und der Geschwindigkeit der Suche hält (Das Level der Index
- Optimierung ist abhängig von der Anzahl der Segmente).
- </para>
- <para>
- Wenn man primär Batch Indexaktualisierungen durchführt sollte die eigene Konfiguration
- eine <emphasis>MaxBufferedDocs</emphasis> Option setzen welche auf den maximalen Wert
- gesetzt wird der vom vorhandenen Speicherplatz unterstützt wird.
- <emphasis>MaxMergeDocs</emphasis> und <emphasis>MergeFactor</emphasis> müssen auf Werte
- gesetzt werden welche die Einflussnahme durch automatische Optimierung so stark wie
- möglich reduziert <footnote><para>Ein zusätzliches Limit sind die maximal vom
- Betriebssystem unterstützten Dateihandler für gleichzeitig geöffnete
- Operationen</para></footnote>. Die komplette Indexoptimierung sollte nach der
- Indizierung durchgeführt werden.
- </para>
- <example id="learning.lucene.indexing.optimization">
- <title>Index Optimierung</title>
- <programlisting language="php"><![CDATA[
- $index->optimize();
- ]]></programlisting>
- </example>
- <para>
- In einigen Konfigurationen ist es effizienter Indexaktualisierungen zu serialisieren
- indem Updateanfragen in einer Queue organisiert werden und verschiedene Updateanfragen
- in einer einzelnen Skriptausführung bearbeitet werden. Das reduziert den Overhead des
- öffnens vom Index und erlaubt die Verwendung von Buffern für die Index Dokumente.
- </para>
- </sect2>
- </sect1>
|