Introduce a basically working rkv based MeiliDB

This commit is contained in:
Clément Renault 2019-10-02 17:34:32 +02:00
parent 905bc5c1a6
commit 39e0d9fc4a
No known key found for this signature in database
GPG key ID: 92ADA4E935E71FA4
22 changed files with 2287 additions and 0 deletions

26
src/store/mod.rs Normal file
View file

@ -0,0 +1,26 @@
mod words;
mod synonyms;
pub use self::words::Words;
pub use self::synonyms::Synonyms;
const SCHEMA_KEY: &str = "schema";
const WORDS_KEY: &str = "words";
const SYNONYMS_KEY: &str = "synonyms";
const RANKED_MAP_KEY: &str = "ranked-map";
const NUMBER_OF_DOCUMENTS_KEY: &str = "number-of-documents";
fn aligned_to(bytes: &[u8], align: usize) -> bool {
(bytes as *const _ as *const () as usize) % align == 0
}
pub fn create(env: &rkv::Rkv, name: &str) -> Result<(Words, Synonyms), rkv::StoreError> {
let main = env.open_single(name, rkv::StoreOptions::create())?;
let words_indexes = env.open_single(format!("{}-words-indexes", name).as_str(), rkv::StoreOptions::create())?;
let synonyms = env.open_single(format!("{}-synonyms", name).as_str(), rkv::StoreOptions::create())?;
let words = Words { main, words_indexes };
let synonyms = Synonyms { main, synonyms };
Ok((words, synonyms))
}