
SegmentMerger
- Namespace
- Rowles.LeanCorpus.Index.Segment
- Assembly
- Rowles.LeanCorpus.dll
Tiered merge policy. When the number of segments at a given size tier exceeds a configurable threshold, the smallest segments in that tier are merged into one. Old segments are removed only after the merged segment is fully committed.
public sealed class SegmentMerger
- Inheritance
-
SegmentMerger
SegmentMerger(MMapDirectory, IMergePolicy, int, double, HnswBuildConfig?, IMetricsCollector?, bool)
Initialises a merger bound to the given directory.
SegmentMerger(MMapDirectory, int, int, double, HnswBuildConfig?, IMetricsCollector?)
Initialises a merger bound to the given directory with the default tiered policy.
DefaultMergeThreshold
Default merge threshold: when this many segments exist, merge.
DefaultSkipInterval
Default postings skip interval.
DefaultSoftDeleteRetentionSeconds
Default soft-delete retention period in seconds (24 hours).
MaybeMerge(List<SegmentInfo>, ref int)
Checks if a merge is needed and performs it. Returns the updated segment list.
MaybeMerge(List<SegmentInfo>, ref int, IReadOnlySet<string>, int)
Checks if a merge is needed and performs it, excluding segments protected by held snapshots.
MergeAll(List<SegmentInfo>, ref int, int)
Forces a full merge of all given segments into a single new segment, bypassing tier-based merge policy. Used by Compact().
MergeSegmentsFromDirectory(MMapDirectory, List<SegmentInfo>, ref int, IndexWriterConfig, int)
Merges segments from a foreign directory into a single new segment in the target directory. Used by AddIndexes(MMapDirectory).