mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2025-12-27 20:42:54 +00:00
48 lines
1.9 KiB
Rust
48 lines
1.9 KiB
Rust
use std::slice;
|
|
|
|
/// Enum describing each component of a tantivy segment.
|
|
/// Each component is stored in its own file,
|
|
/// using the pattern `segment_uuid`.`component_extension`,
|
|
/// except the delete component that takes an `segment_uuid`.`delete_opstamp`.`component_extension`
|
|
#[derive(Copy, Clone, Eq, PartialEq)]
|
|
pub enum SegmentComponent {
|
|
/// Postings (or inverted list). Sorted lists of document ids, associated with terms
|
|
Postings,
|
|
/// Positions of terms in each document.
|
|
Positions,
|
|
/// Column-oriented random-access storage of fields.
|
|
FastFields,
|
|
/// Stores the sum of the length (in terms) of each field for each document.
|
|
/// Field norms are stored as a special u64 fast field.
|
|
FieldNorms,
|
|
/// Dictionary associating `Term`s to `TermInfo`s which is
|
|
/// simply an address into the `postings` file and the `positions` file.
|
|
Terms,
|
|
/// Row-oriented, compressed storage of the documents.
|
|
/// Accessing a document from the store is relatively slow, as it
|
|
/// requires to decompress the entire block it belongs to.
|
|
Store,
|
|
/// Temporary storage of the documents, before streamed to `Store`.
|
|
TempStore,
|
|
/// Bitset describing which document of the segment is alive.
|
|
/// (It was representing deleted docs but changed to represent alive docs from v0.17)
|
|
Delete,
|
|
}
|
|
|
|
impl SegmentComponent {
|
|
/// Iterates through the components.
|
|
pub fn iterator() -> slice::Iter<'static, SegmentComponent> {
|
|
static SEGMENT_COMPONENTS: [SegmentComponent; 8] = [
|
|
SegmentComponent::Postings,
|
|
SegmentComponent::Positions,
|
|
SegmentComponent::FastFields,
|
|
SegmentComponent::FieldNorms,
|
|
SegmentComponent::Terms,
|
|
SegmentComponent::Store,
|
|
SegmentComponent::TempStore,
|
|
SegmentComponent::Delete,
|
|
];
|
|
SEGMENT_COMPONENTS.iter()
|
|
}
|
|
}
|