pub struct SegmentMetaInfo {
pub deletions: Option<DeletionMeta>,
pub num_docs: u32,
pub ancestors: Vec<String>,
pub generation: u32,
pub reordered: bool,
pub bp_converged: bool,
pub bp_unconverged_passes: u32,
pub seismic_pending_terms: u32,
pub seismic_maintenance_passes: u32,
pub seismic_no_progress_passes: u32,
pub ann_fragmented: bool,
}Expand description
Per-segment metadata stored in index metadata This allows merge decisions without loading segment files
Fields§
§deletions: Option<DeletionMeta>Exact immutable row visibility generation; absence means all rows live.
num_docs: u32Number of documents in this segment
ancestors: Vec<String>Parent segment IDs that were merged to produce this segment (empty for fresh segments)
generation: u32Merge generation: 0 for fresh segments, max(parent generations) + 1 for merged segments
reordered: boolWhether this segment has been reordered via Recursive Graph Bisection (BP). Fresh segments and block-copy merges are not reordered. Only segments that have been explicitly reordered (via background optimizer or reorder command) are marked true.
bp_converged: boolWhether the last BP reorder pass ran to natural convergence. False when a wall-clock BP budget ended the pass early — the segment is ordered better than before, and a later warm-started pass can deepen it. Old metadata (field absent) deserializes as converged.
bp_unconverged_passes: u32Number of consecutive budget-exhausted BP rewrites in this segment’s current reordered lineage. Carried across replacement IDs so the optimizer can impose a hard follow-up bound instead of rewriting forever.
seismic_pending_terms: u32Terms whose copied Seismic nominations still span multiple runs.
seismic_maintenance_passes: u32Published partial-maintenance passes in this replacement lineage. Used to distinguish initial work from cooldown-paced follow-ups, not as a cap.
seismic_no_progress_passes: u32Consecutive published maintenance passes that did not reduce Seismic nomination debt. Progress resets this count; the optimizer bounds stalls.
ann_fragmented: boolBinary ANN leaves with multiple copied runs require lossless coalescing.
Implementations§
Source§impl SegmentMetaInfo
impl SegmentMetaInfo
pub fn num_deleted_docs(&self) -> u32
pub fn num_live_docs(&self) -> u32
pub fn deleted_ratio(&self) -> f64
Trait Implementations§
Source§impl Clone for SegmentMetaInfo
impl Clone for SegmentMetaInfo
Source§impl Debug for SegmentMetaInfo
impl Debug for SegmentMetaInfo
Source§impl<'de> Deserialize<'de> for SegmentMetaInfo
impl<'de> Deserialize<'de> for SegmentMetaInfo
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for SegmentMetaInfo
impl RefUnwindSafe for SegmentMetaInfo
impl Send for SegmentMetaInfo
impl Sync for SegmentMetaInfo
impl Unpin for SegmentMetaInfo
impl UnsafeUnpin for SegmentMetaInfo
impl UnwindSafe for SegmentMetaInfo
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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