diff --git a/README.md b/README.md index 31e71b603..20b12329b 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,68 @@ This repository contains crates to quickly debug the engine: ## How to use it? -_Section in WIP_ +Milli is a library that does search things, it must be embedded in a program. +You can compute the documentation of it by using `cargo doc --open`. + +Here is an example usage of the library where we insert documents into the engine +and search for one of them just after. + +```rust +let path = tempfile::tempdir().unwrap(); +let mut options = EnvOpenOptions::new(); +options.map_size(10 * 1024 * 1024); // 10 MB +let index = Index::new(options, &path).unwrap(); + +let mut wtxn = index.write_txn().unwrap(); +let content = documents!([ + { + "id": 2, + "title": "Prideand Prejudice", + "au{hor": "Jane Austin", + "genre": "romance", + "price$": "3.5$", + }, + { + "id": 456, + "title": "Le Petit Prince", + "au{hor": "Antoine de Saint-Exupéry", + "genre": "adventure", + "price$": "10.0$", + }, + { + "id": 1, + "title": "Wonderland", + "au{hor": "Lewis Carroll", + "genre": "fantasy", + "price$": "25.99$", + }, + { + "id": 4, + "title": "Harry Potter ing fantasy\0lood Prince", + "au{hor": "J. K. Rowling", + "genre": "fantasy\0", + }, +]); + +let config = IndexerConfig::default(); +let indexing_config = IndexDocumentsConfig::default(); +let mut builder = + IndexDocuments::new(&mut wtxn, &index, &config, indexing_config.clone(), |_| ()) + .unwrap(); +builder.add_documents(content).unwrap(); +builder.execute().unwrap(); +wtxn.commit().unwrap(); + + +// You can search in the index now! +let mut rtxn = index.read_txn().unwrap(); +let mut search = Search::new(&rtxn, &index); +search.query("horry"); +search.limit(10); + +let result = search.execute().unwrap(); +assert_eq!(result.documents_ids.len(), 1); +``` ## Contributing