2017-04-26 2 views
0

Ist es möglich, einer Lucene mitzuteilen, dass sie ihre Segmente sequenziell und mit fester Größe schreiben soll? Auf diese Weise würden wir Zusammenführungen vermeiden, die für große Segmente schwer sind. Lucene verfügt über LogMergePolicy-Klassen mit ähnlichen Funktionen, mit denen die maximale Segmentgröße nach Anzahl der Dateien oder Dateigröße festgelegt werden kann. Bei Zusammenführungen ist dies jedoch nur eine Grenze.Deaktivieren von Zusammenführungen in Lucene mit sequenziellen Segmenten fester Größe

Antwort

0

Sie könnten die NRTCachingDirectory verwenden, um die kleinen Segmentverschmelzungen in den Speicher zu tun und sie nur auf die Festplatte schreiben, wenn sie ~ 256MiB oder so erreichen.

Aber im Grunde sind die Zusammenführungen notwendig, da die Datenstrukturen wie die FST einmal beschreibbar sind und durch Erstellen einer neuen modifiziert werden.

Vielleicht kann dies mit dem NoMergePolicy kombiniert werden, für das Dateisystemverzeichnis führt es keine weiteren Zusammenführungen durch. Aber das wird ziemlich schlechte Abfrageleistung haben.

Vielleicht tun verschmilzt manuell und irgendwie sie alle auf einmal fusionieren (indem TieredMergePolicy.setMaxMergeAtOnceExplicit())

Aber Merging ist nur eine Kosten der Geschäftstätigkeit, wahrscheinlich besser, die MergePolicy zu ihm und Melodie zu gewöhnen Ihre Arbeitsbelastung.

+0

Schreiben von Segmenten in RAM ist keine Option für mich aufgrund von Datenverlust möglich. In meinem Fall sind Daten Logs, die sich niemals ändern. Daher wäre die Vermeidung von Zusammenführungen eine Leistungsverbesserung. – cybersoft

Verwandte Themen