So, we obviously use a B-Tree to store the key values on disk. We specifically use #LMDB for that. We use pur wrapper called heed. docs.rs/heed
The inverted index is stored in the B-Tree directly. The posting lists are simple roaring bitmaps. This type is memory efficient, space efficient and fast. It is is pure Rust and maintained by the company. docs.rs/roaring
As Meilisearch supports geo operations we use an R-Tree for the geo positions of the documents. docs.rs/rstar
When we index documents we must be fast, that’s why we designed a library that writes and sort a lot of key values on disk to consume a small amount of RAM. It is using a system inspired by the LevelDB/RocksDB internal SSTable format. docs.rs/grenad
And finally we also use the very common Hash Index data structure which is also called an HashMap. We use it when we index some internal data structures to speed things up. doc.rust-lang.org/std/collection…
a pure Rust wrapper*
• • •
Missing some Tweet in this thread? You can try to
force a refresh