pub struct SegmentMerger { /* private fields */ }Expand description
Segment merger - merges multiple segments into one
Implementations§
Source§impl SegmentMerger
impl SegmentMerger
pub fn new(schema: Arc<Schema>) -> Self
Sourcepub fn with_bmp_reorder(self, reorder: bool) -> Self
pub fn with_bmp_reorder(self, reorder: bool) -> Self
Enable BP reordering of BMP fields during the merge (see reorder_bmp).
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<Semaphore>) -> Self
pub fn with_reorder_permits(self, permits: Arc<Semaphore>) -> 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
(homogeneous IVF/ScaNN), otherwise rebuilds ANN from trained structures.
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.
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
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.