pub struct SegmentMerger { /* private fields */ }Expand description
Segment merger - merges multiple segments into one
Implementations§
Source§impl SegmentMerger
impl SegmentMerger
Sourcepub async fn compact<D: DirectoryWriter>(
&self,
dir: &D,
source: &SegmentReader,
output: SegmentId,
memory_budget: usize,
) -> Result<(SegmentMeta, MergeStats)>
pub async fn compact<D: DirectoryWriter>( &self, dir: &D, source: &SegmentReader, output: SegmentId, memory_budget: usize, ) -> Result<(SegmentMeta, MergeStats)>
Remove deleted rows from one segment. The caller owns input/output IDs
and publishes the result. memory_budget bounds decoded scratch, in
addition to the immutable source reader’s documented residency.
Source§impl SegmentMerger
impl SegmentMerger
pub fn new(schema: Arc<Schema>) -> Self
Sourcepub fn with_term_dict_block_size(self, size: SSTableBlockSize) -> Self
pub fn with_term_dict_block_size(self, size: SSTableBlockSize) -> Self
Set the validated flush target for newly written term dictionaries.
Sourcepub fn with_posting_config(
self,
optimization: IndexOptimization,
posting_codec: PostingCodec,
) -> Self
pub fn with_posting_config( self, optimization: IndexOptimization, posting_codec: PostingCodec, ) -> Self
Configure posting compression for newly encoded output.
Sourcepub fn with_reorder_fields(self, reorder: bool) -> Self
pub fn with_reorder_fields(self, reorder: bool) -> Self
Enable field-local BP during merge (historically BMP-only).
Text and BMP fields still opt in through their schema reorder flag.
Sourcepub fn with_background_pool(self, pool: Option<Arc<ThreadPool>>) -> Self
pub fn with_background_pool(self, pool: Option<Arc<ThreadPool>>) -> Self
Run merge-time BP on this bounded pool instead of the global one.
Sourcepub fn with_granularity(self, granularity: BpGranularity) -> Self
pub fn with_granularity(self, granularity: BpGranularity) -> Self
Set merge-time BP granularity (see granularity).
Sourcepub fn with_bp_budget(self, budget: BpBudget) -> Self
pub fn with_bp_budget(self, budget: BpBudget) -> Self
Bound merge-time BP wall clock (see bp_budget).
Sourcepub fn with_bp_memory_budget(self, bytes: usize) -> Self
pub fn with_bp_memory_budget(self, bytes: usize) -> Self
Memory budget for the BP forward index (see bp_memory_budget).
Sourcepub fn with_reorder_permits(self, permits: Arc<ReorderConcurrencyGate>) -> Self
pub fn with_reorder_permits(self, permits: Arc<ReorderConcurrencyGate>) -> Self
Share the application-wide whole-segment reorder gate.
Sourcepub async fn merge<D: Directory + DirectoryWriter>(
&self,
dir: &D,
segments: &[SegmentReader],
new_segment_id: SegmentId,
trained: Option<&TrainedVectorStructures>,
) -> Result<(SegmentMeta, MergeStats)>
pub async fn merge<D: Directory + DirectoryWriter>( &self, dir: &D, segments: &[SegmentReader], new_segment_id: SegmentId, trained: Option<&TrainedVectorStructures>, ) -> Result<(SegmentMeta, MergeStats)>
Merge segments into one, streaming postings/positions/store directly to files.
If trained is provided, dense vectors use O(1) cluster merge when possible
(compatible IVF-PQ), otherwise rebuilds ANN from global artifacts.
Without trained structures, only flat vectors are merged.
Uses streaming writers so postings, positions, and store data flow directly to files instead of buffering everything in memory. Only the term dictionary (compact key+TermInfo entries) is buffered.
This is the physical encoded-copy primitive. Readers with deletion masks
must use compact, or the index writer’s merge operation, which owns
visibility capture and atomic publication across multiple sources.
Auto Trait Implementations§
impl !RefUnwindSafe for SegmentMerger
impl !UnwindSafe for SegmentMerger
impl Freeze for SegmentMerger
impl Send for SegmentMerger
impl Sync for SegmentMerger
impl Unpin for SegmentMerger
impl UnsafeUnpin for SegmentMerger
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> DropFlavorWrapper<T> for T
impl<T> DropFlavorWrapper<T> for T
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more