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 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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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>
Converts
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>
Converts
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
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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.