pub struct SearchIndexBTreeRange<P, V> { /* private fields */ }Expand description
SearchIndexBTreeRange is a index backed by a BTreeMap that can match Exact, InRange, OutRange, Minimum and Maximum queries.
§Example
use attribute_search_engine::{SearchIndex, SearchIndexBTreeRange};
use std::collections::HashSet;
use attribute_search_engine::Query;
let mut index_age = SearchIndexBTreeRange::<usize, i32>::new();
index_age.insert(0, 17);
index_age.insert(1, 42);
index_age.insert(2, 31);
index_age.insert(3, 26);
let result = index_age.search(&Query::Exact("<unused>".into(), "42".into()));
assert_eq!(result, Ok(HashSet::from_iter(vec![1])));
let result = index_age.search(&Query::InRange("<unused>".into(), "20".into(), "40".into()));
assert_eq!(result, Ok(HashSet::from_iter(vec![2, 3])));Implementations§
Source§impl<P, V> SearchIndexBTreeRange<P, V>
impl<P, V> SearchIndexBTreeRange<P, V>
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new SearchIndexBTreeRange.
§Example
use attribute_search_engine::SearchIndexBTreeRange;
let index = SearchIndexBTreeRange::<usize, i32>::new();Sourcepub fn insert(&mut self, primary_id: P, attribute_value: V)
pub fn insert(&mut self, primary_id: P, attribute_value: V)
Insert a new entry in the index.
§Example
use attribute_search_engine::SearchIndexBTreeRange;
let mut index = SearchIndexBTreeRange::<usize, i32>::new();
// You insert an entry by giving a row / primary id and an attribute value:
index.insert(123, 42);
// The same row / primary id can have multiple attributes assigned:
index.insert(123, 69);
// Add as much entries as you want for as many rows you want:
index.insert(124, 32);