2009-06-23 10 views
3

Ich habe einen .net-Windows-Dienst, der jede Nacht Lucene-Suchindizes generiert. Ich erhalte zuerst alle Datensätze aus der Datenbank und füge sie dem Lucene-Index mit der AddDocument-Methode von IndexWriter hinzu und rufe dann die Optimize-Methode auf, bevor ich von der Methode zurückkomme. Da die abgerufenen Datensätze häufig groß sind, dauert die Indizierung ungefähr 2-3 Minuten. Wie Sie bereits wissen, generiert Lucene Zwischensegmentdateien, während es den Index generiert, und komprimiert den gesamten Index in 3 Dateien, wenn Optimize aufgerufen wird.Wissen, wann der Lucene-Index-Generierungsprozess abgeschlossen ist

Gibt es trotzdem ich kann wissen, dass dieser Index-Generierungsprozess von Lucene abgeschlossen ist und Index für die Suche verfügbar ist? Ich muss dies wissen, weil ich eine andere Methode aufrufen möchte, wenn der Prozess abgeschlossen ist.

+0

Sie müssen in der Regel nicht jedes Mal eine Optimierung ausführen, wenn Sie Indizes generieren, aber wenn es nur 2-3 Minuten dauert, dann schätze ich, es tut nichts weh. Unser 82 Millionen Record Lucene/Solr Index ist so groß, dass ich keine Ahnung habe, wie lange eine Optimierung dauern würde. – Hardwareguy

Antwort

0

Ich verstehe nicht, warum Sie wissen müssten, wenn Lucene Indexierung beendet. Sie können Suchen ausführen, während Lucene indexiert. Tatsächlich denke ich, dass Sie während der Optimierung suchen können.

Ich persönlich mag nicht die Idee der Suche nach der Sperrdatei. Können Sie keinen booleschen Wert festlegen und ihn nach dem Aufruf von writer.optimize() umschalten?

+0

Sie können dies benötigen, um herauszufinden, wann ein erstellter Index repliziert werden kann, damit andere Maschinen beispielsweise eine lokale Kopie haben. –

Verwandte Themen