Zend_Search_Lucene Indizes erstellen und aktualisieren

8

Ich benutze Zend_Search_Lucene, um einen Index von Artikeln zu erstellen, damit sie auf meiner Website durchsucht werden können. Immer wenn ein Administrator einen Artikel im Admin-Bereich aktualisiert / erstellt / löscht, wird der Index neu erstellt:

%Vor%

Meine Frage ist das. Da ich die Artikel neu indexiere und gelöschte Artikel behandle, warum sollte ich dann nicht jedes Mal "create" verwenden (statt "open" und update)? Unter Verwendung der obigen Methode denke ich, dass die Artikel jedes Mal mit addDocument hinzugefügt werden (so dass es Duplikate geben würde). Wie würde ich das verhindern? Gibt es eine Möglichkeit zu überprüfen, ob ein Dokument bereits im Index vorhanden ist?

Ich glaube auch nicht, dass ich vollständig verstehe, wie die Indexierung funktioniert, wenn Sie sie "öffnen" und aktualisieren. Es scheint jedes Mal neue # .cfs (also habe ich _0.cfs, _1.cfs, _2.cfs) Dateien im Indexordner zu erstellen, aber wenn ich "create" verwende, überschreibt es diese Datei mit einer neuen # .cfs Datei mit dem # inkrementiert (also zB nur _2.cfs). Können Sie bitte erklären, was diese segmentierten Dateien sind?

    
typeoneerror 28.09.2009, 00:13
quelle

1 Antwort

8

Ja, Sie können prüfen, ob sich ein Dokument bereits im Index befindet, schauen Sie in diese Handbuchseite . Sie können dann dieses spezifische Dokument über $ index- & gt; delete ($ id); aus dem Index löschen, wobei $ id der Rückgabewert der Methode termDocs ist. Danach können Sie einfach die neue Version des Dokuments hinzufügen.

Informationen zu den verschiedenen Indexdateien, die Lucene erstellt: Jedes Mal, wenn Sie einen vorhandenen Index ändern, ändert Lucene nicht wirklich die vorhandenen Dateien, sondern fügt für jede von Ihnen vorgenommene Änderung Teilindizes hinzu. Dies ist extrem schlecht für die Leistung, aber es gibt einen einfachen Weg dazu. Führen Sie nach jeder Änderung am Index folgendes aus: $ index- & gt; optimize (); - Dadurch werden alle Teildateien an den realen Index angehängt, was die Suchzeiten dramatisch verbessert.

    
smoove 29.09.2009, 09:21
quelle