mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2025-12-26 12:09: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>
36 lines
1.4 KiB
Rust
36 lines
1.4 KiB
Rust
// # Searching a range on an indexed int field.
|
|
//
|
|
// Below is an example of creating an indexed integer field in your schema
|
|
// You can use RangeQuery to get a Count of all occurrences in a given range.
|
|
use tantivy::collector::Count;
|
|
use tantivy::query::RangeQuery;
|
|
use tantivy::schema::{Schema, INDEXED};
|
|
use tantivy::{doc, Index, IndexWriter, Result};
|
|
|
|
fn main() -> Result<()> {
|
|
// For the sake of simplicity, this schema will only have 1 field
|
|
let mut schema_builder = Schema::builder();
|
|
|
|
// `INDEXED` is a short-hand to indicate that our field should be "searchable".
|
|
let year_field = schema_builder.add_u64_field("year", INDEXED);
|
|
let schema = schema_builder.build();
|
|
let index = Index::create_in_ram(schema);
|
|
let reader = index.reader()?;
|
|
{
|
|
let mut index_writer: IndexWriter = index.writer_with_num_threads(1, 6_000_000)?;
|
|
for year in 1950u64..2019u64 {
|
|
index_writer.add_document(doc!(year_field => year))?;
|
|
}
|
|
index_writer.commit()?;
|
|
// The index will be a range of years
|
|
}
|
|
reader.reload()?;
|
|
let searcher = reader.searcher();
|
|
// The end is excluded i.e. here we are searching up to 1969
|
|
let docs_in_the_sixties = RangeQuery::new_u64("year".to_string(), 1960..1970);
|
|
// Uses a Count collector to sum the total number of docs in the range
|
|
let num_60s_books = searcher.search(&docs_in_the_sixties, &Count)?;
|
|
assert_eq!(num_60s_books, 10);
|
|
Ok(())
|
|
}
|