2009-06-27 1 views

Antwort

0

Die einfachste Möglichkeit, die Indexierungsleistung von Lucene zu verbessern, besteht darin, den Wert der Indexvariablen mergeFactor von IndexWriter anzupassen. Dieser Wert teilt Lucene mit, wie viele Dokumente im Speicher gespeichert werden sollen, bevor sie auf die Festplatte geschrieben werden, und wie oft mehrere Segmente zusammengeführt werden.

http://search-lucene.blogspot.com/2008/08/indexing-speed-factors.html

3

Ich schrieb einen schrecklichen Beitrag darüber, wie ein Lucene Index parallelisieren. Es ist wirklich schrecklich geschrieben, aber Sie werden es finden here (es gibt einige Beispielcode, die Sie vielleicht sehen möchten).

Wie auch immer, die Hauptidee besteht darin, dass Sie Ihre Daten in große Teile zerlegen und dann an jedem dieser Teile in einem separaten Thread arbeiten. Wenn alle Teile fertig sind, verschmelzen sie alle zu einem einzigen Index.

Mit dem oben beschriebenen Ansatz kann ich mehr als 4 Millionen Datensätze in ca. 2 Stunden.

Hoffe das gibt Ihnen eine Vorstellung davon, wo Sie von hier aus gehen.

+0

Hallo Esteban Vielen Dank für die Antwort. Ich suche etwas Ähnliches wie du es gemacht hast. Könnten Sie bitte einige Code-Snippets in Ihrem Blog veröffentlichen? Danke, Gokul – Gokul

1

Abgesehen von der Schreibseite (Zusammenführungsfaktor) und dem Berechnungsaspekt (Parallelisierung) ist dies manchmal auf die einfachsten Gründe zurückzuführen: langsame Eingabe. Viele Leute bauen einen Lucene-Index aus einer Datenbasis. Manchmal finden Sie, dass eine bestimmte Abfrage für diese Daten zu kompliziert und langsam ist, um alle (2 Millionen?) Datensätze schnell zurückzugeben. Versuchen Sie nur die Abfrage und Schreiben auf die Festplatte, wenn es immer noch in der Größenordnung von 5-9 Stunden ist, haben Sie einen Platz zum Optimieren (SQL) gefunden.

1

Der folgende Artikel hat mir wirklich geholfen, wenn ich die Dinge beschleunigen benötigen bis:

http://wiki.apache.org/lucene-java/ImproveIndexingSpeed

fand ich, dass Dokument Aufbau unsere primäre Engpass war. Nachdem ich den Datenzugriff optimiert und einige der anderen Empfehlungen umgesetzt hatte, konnte ich die Indexierungsleistung erheblich steigern.