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    SparsePosting,
89    SparsePostingIterator,
90    SparsePostingList,
91    SparseQueryConfig,
92    SparseSkipEntry,
93    SparseSkipList,
94    SparseVector,
95    SparseVectorConfig,
96    TERMINATED,
97    // Vertical BP128
98    VERTICAL_BP128_BLOCK_SIZE,
99    VerticalBP128Block,
100    VerticalBP128Iterator,
101    VerticalBP128PostingList,
102    WeightQuantization,
103    binary_search_block,
104    decode_element_ordinal,
105    decode_token_position,
106    encode_position,
107    optimal_partition,
108    pack_block,
109    pack_deltas_fixed,
110    pack_vertical,
111    read_doc_id_block,
112    read_vint,
113    unpack_block,
114    unpack_block_n,
115    unpack_deltas_fixed,
116    unpack_vertical,
117    write_doc_id_block,
118    write_vint,
119};
120
121// Re-export vector
122pub use vector::{
123    // IVF core
124    ClusterData,
125    ClusterStorage,
126    CoarseCentroids,
127    CoarseConfig,
128    // Quantization
129    DistanceTable,
130    // Indexes
131    IVFPQConfig,
132    IVFPQIndex,
133    IVFRaBitQConfig,
134    IVFRaBitQIndex,
135    MultiAssignment,
136    PQCodebook,
137    PQConfig,
138    PQVector,
139    QuantizedCode,
140    QuantizedQuery,
141    QuantizedVector,
142    Quantizer,
143    RaBitQCodebook,
144    RaBitQConfig,
145    RaBitQIndex,
146    SoarConfig,
147};
148
149// Re-export simd
150pub use simd::bits_needed;
151
152// Re-export sstable
153pub use sstable::{
154    AsyncSSTableIterator, AsyncSSTableReader, BLOCK_SIZE as SSTABLE_BLOCK_SIZE, BloomFilter,
155    SSTABLE_MAGIC, SSTableStats, SSTableValue, SSTableWriter, SSTableWriterConfig, SparseDimInfo,
156    TermInfo,
157};
158
159// Re-export sstable_index
160#[cfg(feature = "native")]
161pub use sstable_index::FstBlockIndex;
162pub use sstable_index::{BlockAddr, BlockAddrStore, BlockIndex, MmapBlockIndex};