index_and_term_delete/
index_and_term_delete.rs

1use std::{collections::HashMap, fs, path::Path};
2
3use book::Book;
4use text_search::{tantivy::Term, Indexable, Indexer};
5
6mod book;
7
8fn main() {
9    let path = "/home/salman/text-search-test";
10    let _ = fs::remove_dir_all(&path);
11    let _ = fs::create_dir(&path);
12    let mut indexer = Indexer::<Book>::new(Path::new(path));
13    let books = Book::get_sample_books();
14    for book in &books {
15        indexer.index(book.clone());
16    }
17    indexer.commit();
18
19    println!("Before deleting");
20    let regex_search_result = indexer.hybrid_search(HashMap::new(), "name", "Rust", 10);
21    for book in regex_search_result {
22        println!("{:?}", book);
23    }
24
25    let field = Book::get_struct_info()
26        .generate_schema()
27        .get_field("author")
28        .unwrap();
29
30    let term = Term::from_field_text(field, "Steve Klabnik and Carol Nichols");
31    indexer.delete_using_term(term);
32    indexer.commit();
33
34    println!("After deleting");
35    let regex_search_result = indexer.hybrid_search(HashMap::new(), "name", "Rust", 10);
36    for book in regex_search_result {
37        println!("{:?}", book);
38    }
39}