Section navigation

Public classSealed 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

Public constructor SegmentMerger(MMapDirectory, IMergePolicy, int, double, HnswBuildConfig?, IMetricsCollector?, bool)

Initialises a merger bound to the given directory.

Public constructor SegmentMerger(MMapDirectory, int, int, double, HnswBuildConfig?, IMetricsCollector?)

Initialises a merger bound to the given directory with the default tiered policy.

Public field DefaultMergeThreshold

Default merge threshold: when this many segments exist, merge.

Public field DefaultSkipInterval

Default postings skip interval.

Public field DefaultSoftDeleteRetentionSeconds

Default soft-delete retention period in seconds (24 hours).

Public method MaybeMerge(List<SegmentInfo>, ref int)

Checks if a merge is needed and performs it. Returns the updated segment list.

Public method MaybeMerge(List<SegmentInfo>, ref int, IReadOnlySet<string>, int)

Checks if a merge is needed and performs it, excluding segments protected by held snapshots.

Public method 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().

Public method 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).