pub struct BlockMeta {
pub last_docid: u32,
pub docids_offset: u32,
pub tfs_offset: u32,
pub positions_offset: u32,
pub positions_count: u32,
pub count: u16,
pub docid_bits: u8,
pub tf_bits: u8,
pub position_bits: u8,
pub block_max: u8,
pub max_tf: u32,
pub min_len: u16,
}Expand description
One block’s metadata row, exactly BLOCK_META_LEN bytes on disk.
Fields§
§last_docid: u32Largest document id in the block; the skip key.
docids_offset: u32Byte offset of the block’s packed docid deltas.
tfs_offset: u32Byte offset of the block’s packed term frequencies.
positions_offset: u32Byte offset of the block’s packed positions.
positions_count: u32Packed positions in the block.
count: u16Postings in the block; the final block may be partial.
docid_bits: u8Bit width of the docid deltas.
tf_bits: u8Bit width of the term frequencies.
position_bits: u8Bit width of the position deltas.
block_max: u8Reserved for a caller-supplied impact. Written zero by this engine.
Version 1 stored quantize(score / ceiling) here and computed the
pruning bound from it. That was unsound: the quotient bakes in
seal-time avgdl and seal-time (k1, b), neither of which cancels,
so the stored bound fell below a true score once statistics drifted.
The slot is kept — its shape suits a caller-supplied learned impact —
but nothing in the engine reads it for a bound.
max_tf: u32Largest term frequency in the block. Zero in a version 1 stream.
min_len: u16Smallest document length in the block, saturating DOWN to u16::MAX.
Down, because a shorter document scores higher: saturating upward would put the stored bound below a true score.
Implementations§
Source§impl BlockMeta
impl BlockMeta
Sourcepub fn read(input: &[u8]) -> Result<Self, PostingsError>
pub fn read(input: &[u8]) -> Result<Self, PostingsError>
Reads one metadata row from the front of input.
§Errors
Returns PostingsError::Truncated when fewer than
BLOCK_META_LEN bytes are available.