mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2025-12-23 02:29:57 +00:00
* fix windows build (#1) * Fix windows build * Add doc traits * Add field value iter * Add value and serialization * Adjust order * Fix bug * Correct type * Fix generic bugs * Reformat code * Add generic to index writer which I forgot about * Fix missing generics on single segment writer * Add missing type export * Add default methods for convenience * Cleanup * Fix more-like-this query to use standard types * Update API and fix tests * Add doc traits * Add field value iter * Add value and serialization * Adjust order * Fix bug * Correct type * Rebase main and fix conflicts * Reformat code * Merge upstream * Fix missing generics on single segment writer * Add missing type export * Add default methods for convenience * Cleanup * Fix more-like-this query to use standard types * Update API and fix tests * Add tokenizer improvements from previous commits * Add tokenizer improvements from previous commits * Reformat * Fix unit tests * Fix unit tests * Use enum in changes * Stage changes * Add new deserializer logic * Add serializer integration * Add document deserializer * Implement new (de)serialization api for existing types * Fix bugs and type errors * Add helper implementations * Fix errors * Reformat code * Add unit tests and some code organisation for serialization * Add unit tests to deserializer * Add some small docs * Add support for deserializing serde values * Reformat * Fix typo * Fix typo * Change repr of facet * Remove unused trait methods * Add child value type * Resolve comments * Fix build * Fix more build errors * Fix more build errors * Fix the tests I missed * Fix examples * fix numerical order, serialize PreTok Str * fix coverage * rename Document to TantivyDocument, rename DocumentAccess to Document add Binary prefix to binary de/serialization * fix coverage --------- Co-authored-by: Pascal Seitz <pascal.seitz@gmail.com>
41 lines
1.4 KiB
Rust
41 lines
1.4 KiB
Rust
use tantivy::schema::*;
|
|
|
|
// # Document from json
|
|
//
|
|
// For convenience, `Document` can be parsed directly from json.
|
|
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(())
|
|
}
|