Skip to main content

hermes_core/structures/
mod.rs

1//! Core data structures for indexing
2//!
3//! Organized into submodules:
4//! - `postings` - Posting list compression formats
5//! - `vector` - Vector indexing (RaBitQ, IVF-RaBitQ, ScaNN)
6//! - `simd` - SIMD utilities
7//! - `sstable` - SSTable for term dictionary
8
9pub mod fast_field;
10pub mod postings;
11pub mod simd;
12mod sstable;
13mod sstable_index;
14pub mod vector;
15
16// Re-export postings
17pub use postings::{
18    BlockPostingIterator,
19    BlockPostingList,
20    // Sparse vector
21    BlockSparsePostingIterator,
22    BlockSparsePostingList,
23    // Posting common
24    COMMON_BLOCK_SIZE,
25    // Posting format
26    CompressedPostingIterator,
27    CompressedPostingList,
28    CompressionStats,
29    // Elias-Fano
30    EliasFano,
31    EliasFanoIterator,
32    EliasFanoPostingIterator,
33    EliasFanoPostingList,
34    // Horizontal BP128
35    HORIZONTAL_BP128_BLOCK_SIZE,
36    HorizontalBP128Block,
37    HorizontalBP128Iterator,
38    HorizontalBP128PostingList,
39    INLINE_THRESHOLD,
40    IndexOptimization,
41    IndexSize,
42    // Positions
43    MAX_ELEMENT_ORDINAL,
44    MAX_TOKEN_POSITION,
45    // OptP4D
46    OPT_P4D_BLOCK_SIZE,
47    OptP4DBlock,
48    OptP4DIterator,
49    OptP4DPostingList,
50    PARTITIONED_EF_THRESHOLD,
51    // Partitioned EF
52    PEF_BLOCK_SIZE,
53    PEFBlockInfo,
54    // Basic posting
55    POSTING_BLOCK_SIZE,
56    PartitionedEFPostingIterator,
57    PartitionedEFPostingList,
58    PartitionedEliasFano,
59    PositionPostingIterator,
60    PositionPostingList,
61    Posting,
62    PostingFormat,
63    PostingList,
64    PostingListIterator,
65    PostingWithPositions,
66    QueryWeighting,
67    // Roaring
68    ROARING_BLOCK_SIZE,
69    ROARING_THRESHOLD_RATIO,
70    // Rounded BP128
71    ROUNDED_BP128_BLOCK_SIZE,
72    RoaringBitmap,
73    RoaringBlockInfo,
74    RoaringIterator,
75    RoaringPostingIterator,
76    RoaringPostingList,
77    RoundedBP128Block,
78    RoundedBP128Iterator,
79    RoundedBP128PostingList,
80    RoundedBitWidth,
81    SMALL_BLOCK_SIZE,
82    SMALL_BLOCK_THRESHOLD,
83    SPARSE_BLOCK_SIZE,
84    SkipEntry,
85    SkipList,
86    SparseBlock,
87    SparseEntry,
88    SparseFormat,
89    SparsePosting,
90    SparsePostingIterator,
91    SparsePostingList,
92    SparseQueryConfig,
93    SparseSkipEntry,
94    SparseSkipList,
95    SparseVector,
96    SparseVectorConfig,
97    TERMINATED,
98    // Vertical BP128
99    VERTICAL_BP128_BLOCK_SIZE,
100    VerticalBP128Block,
101    VerticalBP128Iterator,
102    VerticalBP128PostingList,
103    WeightQuantization,
104    binary_search_block,
105    decode_element_ordinal,
106    decode_token_position,
107    encode_position,
108    optimal_partition,
109    pack_block,
110    pack_deltas_fixed,
111    pack_vertical,
112    read_doc_id_block,
113    read_vint,
114    unpack_block,
115    unpack_block_n,
116    unpack_deltas_fixed,
117    unpack_vertical,
118    write_doc_id_block,
119    write_vint,
120};
121
122// Re-export vector
123pub use vector::{
124    BinaryIvfConfig,
125    BinaryIvfIndex,
126    // IVF core
127    ClusterData,
128    ClusterStorage,
129    CoarseCentroids,
130    CoarseConfig,
131    // Quantization
132    DistanceTable,
133    // Indexes
134    IVFPQConfig,
135    IVFPQIndex,
136    IVFRaBitQConfig,
137    IVFRaBitQIndex,
138    MultiAssignment,
139    PQCodebook,
140    PQConfig,
141    PQVector,
142    QuantizedCode,
143    QuantizedQuery,
144    QuantizedVector,
145    Quantizer,
146    RaBitQCodebook,
147    RaBitQConfig,
148    RaBitQIndex,
149    SoarConfig,
150};
151
152// Re-export simd
153pub use simd::bits_needed;
154
155// Re-export sstable
156pub use sstable::{
157    AsyncSSTableIterator, AsyncSSTableReader, BLOCK_SIZE as SSTABLE_BLOCK_SIZE, BloomFilter,
158    SSTABLE_MAGIC, SSTableStats, SSTableValue, SSTableWriter, SSTableWriterConfig, SparseDimInfo,
159    TermInfo,
160};
161
162// Re-export sstable_index
163#[cfg(feature = "fst-index")]
164pub use sstable_index::FstBlockIndex;
165pub use sstable_index::{BlockAddr, BlockAddrStore, BlockIndex, MmapBlockIndex};