pub struct BlockSparsePostingList { /* private fields */ }Expand description
Block-based sparse posting list for skip-list style access
Similar to BlockPostingList but stores quantized weights. Includes block-max metadata for Block-Max WAND optimization.
Implementations§
Source§impl BlockSparsePostingList
impl BlockSparsePostingList
Sourcepub fn from_postings(
postings: &[(DocId, f32)],
quantization: WeightQuantization,
) -> Result<Self>
pub fn from_postings( postings: &[(DocId, f32)], quantization: WeightQuantization, ) -> Result<Self>
Build from postings with specified quantization
Sourcepub fn from_postings_with_pruning(
postings: &[(DocId, f32)],
quantization: WeightQuantization,
pruning_fraction: Option<f32>,
) -> Result<Self>
pub fn from_postings_with_pruning( postings: &[(DocId, f32)], quantization: WeightQuantization, pruning_fraction: Option<f32>, ) -> Result<Self>
Build from postings with static pruning (SEISMIC-style optimization)
If pruning_fraction is Some(f), only the top f*len postings by weight are kept.
This exploits “concentration of importance” - top entries preserve most of inner product.
Applied only during initial segment build, not during merge.
Sourcepub fn deserialize<R: Read>(reader: &mut R) -> Result<Self>
pub fn deserialize<R: Read>(reader: &mut R) -> Result<Self>
Deserialize from bytes
Sourcepub fn num_blocks(&self) -> usize
pub fn num_blocks(&self) -> usize
Number of blocks
Sourcepub fn quantization(&self) -> WeightQuantization
pub fn quantization(&self) -> WeightQuantization
Get quantization format
Sourcepub fn global_max_weight(&self) -> f32
pub fn global_max_weight(&self) -> f32
Global maximum weight across all blocks (for MaxScore pruning)
Sourcepub fn block_max_weight(&self, block_idx: usize) -> Option<f32>
pub fn block_max_weight(&self, block_idx: usize) -> Option<f32>
Get block-max weight for a specific block
Sourcepub fn max_contribution(&self, query_weight: f32) -> f32
pub fn max_contribution(&self, query_weight: f32) -> f32
Compute maximum possible contribution to dot product with given query weight
This is used for MaxScore pruning: if query_weight * global_max_weight < threshold,
this entire dimension can be skipped.
Sourcepub fn iterator(&self) -> BlockSparsePostingIterator<'_>
pub fn iterator(&self) -> BlockSparsePostingIterator<'_>
Create an iterator
Sourcepub fn size_bytes(&self) -> usize
pub fn size_bytes(&self) -> usize
Approximate size in bytes
Sourcepub fn concatenate(
sources: &[(BlockSparsePostingList, u32)],
target_quantization: WeightQuantization,
) -> Result<Self>
pub fn concatenate( sources: &[(BlockSparsePostingList, u32)], target_quantization: WeightQuantization, ) -> Result<Self>
Concatenate multiple posting lists with doc_id remapping
Trait Implementations§
Source§impl Clone for BlockSparsePostingList
impl Clone for BlockSparsePostingList
Source§fn clone(&self) -> BlockSparsePostingList
fn clone(&self) -> BlockSparsePostingList
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for BlockSparsePostingList
impl RefUnwindSafe for BlockSparsePostingList
impl Send for BlockSparsePostingList
impl Sync for BlockSparsePostingList
impl Unpin for BlockSparsePostingList
impl UnwindSafe for BlockSparsePostingList
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<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.