use tantivy::schema::*;
use tantivy::schema::*;
fn main() -> tantivy::Result<()> {
Let’s first define a schema and an index. Check out the basic example if this is confusing to you.
first we need to define a schema …
let mut schema_builder = Schema::builder();
schema_builder.add_text_field("title", TEXT | STORED);
schema_builder.add_text_field("body", TEXT);
schema_builder.add_u64_field("year", INDEXED);
let schema = schema_builder.build();
Let’s assume we have a json-serialized document.
let mice_and_men_doc_json = r#"{
"title": "Of Mice and Men",
"year": 1937
}"#;
We can parse our document
let _mice_and_men_doc = TantivyDocument::parse_json(&schema, mice_and_men_doc_json)?;
Multi-valued field are allowed, they are expressed in JSON by an array. The following document has two titles.
let frankenstein_json = r#"{
"title": ["Frankenstein", "The Modern Prometheus"],
"year": 1818
}"#;
let _frankenstein_doc = TantivyDocument::parse_json(&schema, frankenstein_json)?;
Note that the schema is saved in your index directory.
As a result, Indexes are aware of their schema, and you can use this feature
just by opening an existing Index
, and calling index.schema()..parse_document(json)
.
Ok(())
}