Indizierung
Indizierung wird durch das Hinzufügen eines neuen Dokuments zu einem bestehenden oder neuen
Index durchgeführt:
addDocument($doc);
]]>
Es gibt zwei Wege Dokument Objekte zu erstellen. Der erste ist es manuell zu tun.
Manuelle Dokument Erstellung
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));
]]>
Die zweite Methode ist das Laden von HTML oder von Microsoft Office 2007
Dateien:
Laden vom Dokument
Wenn ein Dokument von einem der unterstützten Formate geladen wird, kann es trotzdem noch
manuell mit einem neuen benutzerdefinierten Feld erweitert werden.
Indizierungs Policy
Man sollte eine Indizierungs Policy im Architektur Design der eigenen Anwendung
definieren.
Man könnte eine auf-Wunsch Index Konfiguration benötigen (etwas wie ein
OLTP System). In solchen Systemen wird pro Benutzeranfrage
normalerweise ein Dokument hinzugefügt. Daher beeinflusst die
MaxBufferedDocs Option das System nicht. Auf der anderen Seite ist
MaxMergeDocs wirklich nützlich da es erlaubt die maximale
Ausführungszeit des Skripts zu begrenzen. MergeFactor 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).
Wenn man primär Batch Indexaktualisierungen durchführt sollte die eigene Konfiguration
eine MaxBufferedDocs Option setzen welche auf den maximalen Wert
gesetzt wird der vom vorhandenen Speicherplatz unterstützt wird.
MaxMergeDocs und MergeFactor müssen auf Werte
gesetzt werden welche die Einflussnahme durch automatische Optimierung so stark wie
möglich reduziert Ein zusätzliches Limit sind die maximal vom
Betriebssystem unterstützten Dateihandler für gleichzeitig geöffnete
Operationen. Die komplette Indexoptimierung sollte nach der
Indizierung durchgeführt werden.
Index Optimierung
optimize();
]]>
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.