diff --git a/examples/basic_search.rs b/examples/basic_search.rs
index 3a0a71e2f..690f3e586 100644
--- a/examples/basic_search.rs
+++ b/examples/basic_search.rs
@@ -170,10 +170,8 @@ fn main() -> tantivy::Result<()> {
//
// ### Searcher
//
- // Let's search our index. Start by reloading
- // searchers in the index. This should be done
- // after every `commit()`.
- index.load_searchers()?;
+ // TODO explain what a reader does
+ let reader = index.reader();
// We now need to acquire a searcher.
// Some search experience might require more than
@@ -187,7 +185,7 @@ fn main() -> tantivy::Result<()> {
// You should acquire a searcher every time you
// start processing a request and
// and release it right after your query is finished.
- let searcher = index.searcher();
+ let searcher = reader.searcher();
// ### Query
diff --git a/examples/custom_collector.rs b/examples/custom_collector.rs
index 0d19a83e5..7ee68312b 100644
--- a/examples/custom_collector.rs
+++ b/examples/custom_collector.rs
@@ -170,9 +170,8 @@ fn main() -> tantivy::Result<()> {
price => 5_200u64
));
index_writer.commit()?;
- index.load_searchers()?;
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let query_parser = QueryParser::for_index(&index, vec![product_name, product_description]);
// here we want to get a hit on the 'ken' in Frankenstein
diff --git a/examples/custom_tokenizer.rs b/examples/custom_tokenizer.rs
index 72b69184d..0e0b0bec8 100644
--- a/examples/custom_tokenizer.rs
+++ b/examples/custom_tokenizer.rs
@@ -91,9 +91,8 @@ fn main() -> tantivy::Result<()> {
increasing confidence in the success of my undertaking."#
));
index_writer.commit()?;
- index.load_searchers()?;
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
// The query parser can interpret human queries.
// Here, if the user does not specify which
diff --git a/examples/deleting_updating_documents.rs b/examples/deleting_updating_documents.rs
index ed59fa8c8..969dcd4f8 100644
--- a/examples/deleting_updating_documents.rs
+++ b/examples/deleting_updating_documents.rs
@@ -14,12 +14,16 @@ use tantivy::collector::TopDocs;
use tantivy::query::TermQuery;
use tantivy::schema::*;
use tantivy::Index;
+use tantivy::IndexReader;
// A simple helper function to fetch a single document
// given its id from our index.
// It will be helpful to check our work.
-fn extract_doc_given_isbn(index: &Index, isbn_term: &Term) -> tantivy::Result> {
- let searcher = index.searcher();
+fn extract_doc_given_isbn(
+ reader: &IndexReader,
+ isbn_term: &Term,
+) -> tantivy::Result > {
+ let searcher = reader.searcher();
// This is the simplest query you can think of.
// It matches all of the documents containing a specific term.
@@ -85,12 +89,12 @@ fn main() -> tantivy::Result<()> {
isbn => "978-9176370711",
));
index_writer.commit()?;
- index.load_searchers()?;
+ let reader = index.reader();
let frankenstein_isbn = Term::from_field_text(isbn, "978-9176370711");
// Oops our frankenstein doc seems mispelled
- let frankenstein_doc_misspelled = extract_doc_given_isbn(&index, &frankenstein_isbn)?.unwrap();
+ let frankenstein_doc_misspelled = extract_doc_given_isbn(&reader, &frankenstein_isbn)?.unwrap();
assert_eq!(
schema.to_json(&frankenstein_doc_misspelled),
r#"{"isbn":["978-9176370711"],"title":["Frankentein"]}"#,
@@ -129,10 +133,10 @@ fn main() -> tantivy::Result<()> {
// Everything happened as if the document was updated.
index_writer.commit()?;
// We reload our searcher to make our change available to clients.
- index.load_searchers()?;
+ reader.load_searchers()?;
// No more typo!
- let frankenstein_new_doc = extract_doc_given_isbn(&index, &frankenstein_isbn)?.unwrap();
+ let frankenstein_new_doc = extract_doc_given_isbn(&reader, &frankenstein_isbn)?.unwrap();
assert_eq!(
schema.to_json(&frankenstein_new_doc),
r#"{"isbn":["978-9176370711"],"title":["Frankenstein"]}"#,
diff --git a/examples/faceted_search.rs b/examples/faceted_search.rs
index 9d68f2a4e..09ea4627b 100644
--- a/examples/faceted_search.rs
+++ b/examples/faceted_search.rs
@@ -55,9 +55,9 @@ fn main() -> tantivy::Result<()> {
index_writer.commit()?;
- index.load_searchers()?;
+ let reader = index.reader();
- let searcher = index.searcher();
+ let searcher = reader.searcher();
let mut facet_collector = FacetCollector::for_field(tags);
facet_collector.add_facet("/pools");
diff --git a/examples/iterating_docs_and_positions.rs b/examples/iterating_docs_and_positions.rs
index 62513ea7a..5ff2d0183 100644
--- a/examples/iterating_docs_and_positions.rs
+++ b/examples/iterating_docs_and_positions.rs
@@ -33,9 +33,9 @@ fn main() -> tantivy::Result<()> {
index_writer.add_document(doc!(title => "The modern Promotheus"));
index_writer.commit()?;
- index.load_searchers()?;
+ let reader = index.reader();
- let searcher = index.searcher();
+ let searcher = reader.searcher();
// A tantivy index is actually a collection of segments.
// Similarly, a searcher just wraps a list `segment_reader`.
diff --git a/examples/snippet.rs b/examples/snippet.rs
index 35ba07557..acf25051d 100644
--- a/examples/snippet.rs
+++ b/examples/snippet.rs
@@ -48,9 +48,7 @@ fn main() -> tantivy::Result<()> {
// ...
index_writer.commit()?;
- index.load_searchers()?;
-
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let query_parser = QueryParser::for_index(&index, vec![title, body]);
let query = query_parser.parse_query("sycamore spring")?;
diff --git a/examples/stop_words.rs b/examples/stop_words.rs
index cdfe054e8..db97cc90c 100644
--- a/examples/stop_words.rs
+++ b/examples/stop_words.rs
@@ -96,9 +96,9 @@ fn main() -> tantivy::Result<()> {
index_writer.commit()?;
- index.load_searchers()?;
+ let reader = index.reader();
- let searcher = index.searcher();
+ let searcher = reader.searcher();
let query_parser = QueryParser::for_index(&index, vec![title, body]);
diff --git a/src/collector/facet_collector.rs b/src/collector/facet_collector.rs
index 083bd65ae..c4e3c2fa2 100644
--- a/src/collector/facet_collector.rs
+++ b/src/collector/facet_collector.rs
@@ -483,8 +483,7 @@ mod tests {
index_writer.add_document(doc);
}
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let mut facet_collector = FacetCollector::for_field(facet_field);
facet_collector.add_facet(Facet::from("/top1"));
let counts = searcher.search(&AllQuery, &facet_collector).unwrap();
@@ -532,8 +531,7 @@ mod tests {
facet_field => Facet::from_text(&"/subjects/B/b"),
));
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
assert_eq!(searcher.num_docs(), 1);
let mut facet_collector = FacetCollector::for_field(facet_field);
facet_collector.add_facet("/subjects");
@@ -579,9 +577,7 @@ mod tests {
index_writer.add_document(doc);
}
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
-
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let mut facet_collector = FacetCollector::for_field(facet_field);
facet_collector.add_facet("/facet");
@@ -635,8 +631,7 @@ mod bench {
index_writer.add_document(doc);
}
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
-
+ let reader = index.reader();
b.iter(|| {
let searcher = index.searcher();
let facet_collector = FacetCollector::for_field(facet_field);
diff --git a/src/collector/int_facet_collector.rs b/src/collector/int_facet_collector.rs
index 01f00cc37..4232343e6 100644
--- a/src/collector/int_facet_collector.rs
+++ b/src/collector/int_facet_collector.rs
@@ -101,8 +101,7 @@ mod tests {
assert_eq!(index_writer.commit().unwrap(), 10u64);
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let mut ffvf_i64: IntFacetCollector = IntFacetCollector::new(num_field_i64);
let mut ffvf_u64: IntFacetCollector = IntFacetCollector::new(num_field_u64);
diff --git a/src/collector/multi_collector.rs b/src/collector/multi_collector.rs
index f12c648a4..bb8362856 100644
--- a/src/collector/multi_collector.rs
+++ b/src/collector/multi_collector.rs
@@ -278,8 +278,7 @@ mod tests {
index_writer.add_document(doc!(text=>"abc"));
index_writer.commit().unwrap();
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let term = Term::from_field_text(text, "abc");
let query = TermQuery::new(term, IndexRecordOption::Basic);
diff --git a/src/collector/top_field_collector.rs b/src/collector/top_field_collector.rs
index c6c5c29a7..804eee291 100644
--- a/src/collector/top_field_collector.rs
+++ b/src/collector/top_field_collector.rs
@@ -171,7 +171,7 @@ mod tests {
size => 16u64,
));
});
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let top_collector = TopDocs::with_limit(4).order_by_field(size);
let top_docs: Vec<(u64, DocAddress)> = searcher.search(&query, &top_collector).unwrap();
@@ -198,7 +198,7 @@ mod tests {
size => 12u64,
));
});
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let top_collector: TopDocsByField = TopDocs::with_limit(4).order_by_field(Field(2));
let segment_reader = searcher.segment_reader(0u32);
top_collector
@@ -218,7 +218,7 @@ mod tests {
size => 12u64,
));
});
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let segment = searcher.segment_reader(0);
let top_collector: TopDocsByField = TopDocs::with_limit(4).order_by_field(size);
assert_matches!(
@@ -241,8 +241,6 @@ mod tests {
let mut index_writer = index.writer_with_num_threads(1, 3_000_000).unwrap();
doc_adder(&mut index_writer);
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
-
let query_parser = QueryParser::for_index(&index, vec![query_field]);
let query = query_parser.parse_query(query).unwrap();
(index, query)
diff --git a/src/collector/top_score_collector.rs b/src/collector/top_score_collector.rs
index 869022686..fcff13b04 100644
--- a/src/collector/top_score_collector.rs
+++ b/src/collector/top_score_collector.rs
@@ -148,7 +148,6 @@ mod tests {
index_writer.add_document(doc!(text_field=>"I like Droopy"));
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
index
}
@@ -159,6 +158,7 @@ mod tests {
let query_parser = QueryParser::for_index(&index, vec![field]);
let text_query = query_parser.parse_query("droopy tax").unwrap();
let score_docs: Vec<(Score, DocAddress)> = index
+ .reader()
.searcher()
.search(&text_query, &TopDocs::with_limit(4))
.unwrap();
@@ -179,6 +179,7 @@ mod tests {
let query_parser = QueryParser::for_index(&index, vec![field]);
let text_query = query_parser.parse_query("droopy tax").unwrap();
let score_docs: Vec<(Score, DocAddress)> = index
+ .reader()
.searcher()
.search(&text_query, &TopDocs::with_limit(2))
.unwrap();
diff --git a/src/core/index.rs b/src/core/index.rs
index 5db404ca0..245ae0068 100644
--- a/src/core/index.rs
+++ b/src/core/index.rs
@@ -187,7 +187,7 @@ impl Index {
}
}
- pub fn reader(&self, reload_policy: ReloadPolicy) -> IndexReader {
+ pub fn reader(&self) -> IndexReader {
self.reader_builder().into()
}
diff --git a/src/core/segment_reader.rs b/src/core/segment_reader.rs
index 597ecae39..bc35f4624 100644
--- a/src/core/segment_reader.rs
+++ b/src/core/segment_reader.rs
@@ -477,9 +477,7 @@ mod test {
// ok, now we should have a deleted doc
index_writer2.commit().unwrap();
}
-
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let docs: Vec = searcher.segment_reader(0).doc_ids_alive().collect();
assert_eq!(vec![0u32, 2u32], docs);
}
diff --git a/src/fastfield/bytes/mod.rs b/src/fastfield/bytes/mod.rs
index 1a551ecc0..4ad2eead5 100644
--- a/src/fastfield/bytes/mod.rs
+++ b/src/fastfield/bytes/mod.rs
@@ -22,9 +22,7 @@ mod tests {
index_writer.add_document(doc!(field=>vec![1u8, 3, 5, 7, 9]));
index_writer.add_document(doc!(field=>vec![0u8; 1000]));
assert!(index_writer.commit().is_ok());
-
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let reader = searcher.segment_reader(0);
let bytes_reader = reader.bytes_fast_field_reader(field).unwrap();
diff --git a/src/fastfield/multivalued/mod.rs b/src/fastfield/multivalued/mod.rs
index 733f211bb..1853f5a2d 100644
--- a/src/fastfield/multivalued/mod.rs
+++ b/src/fastfield/multivalued/mod.rs
@@ -28,11 +28,12 @@ mod tests {
index_writer.add_document(doc!(field=>5u64, field=>20u64,field=>1u64));
assert!(index_writer.commit().is_ok());
- index.load_searchers().unwrap();
- let searcher = index.searcher();
- let reader = searcher.segment_reader(0);
+ let searcher = index.reader().searcher();
+ let segment_reader = searcher.segment_reader(0);
let mut vals = Vec::new();
- let multi_value_reader = reader.multi_fast_field_reader::(field).unwrap();
+ let multi_value_reader = segment_reader
+ .multi_fast_field_reader::(field)
+ .unwrap();
{
multi_value_reader.get_vals(2, &mut vals);
assert_eq!(&vals, &[4u64]);
@@ -63,8 +64,7 @@ mod tests {
index_writer.add_document(doc!(field=> -5i64, field => -20i64, field=>1i64));
assert!(index_writer.commit().is_ok());
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let reader = searcher.segment_reader(0);
let mut vals = Vec::new();
let multi_value_reader = reader.multi_fast_field_reader::(field).unwrap();
diff --git a/src/fastfield/multivalued/reader.rs b/src/fastfield/multivalued/reader.rs
index d7df15a37..7a27f716b 100644
--- a/src/fastfield/multivalued/reader.rs
+++ b/src/fastfield/multivalued/reader.rs
@@ -75,8 +75,7 @@ mod tests {
index_writer.add_document(doc);
}
index_writer.commit().expect("Commit failed");
- index.load_searchers().expect("Reloading searchers");
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let segment_reader = searcher.segment_reader(0);
let mut facet_reader = segment_reader.facet_reader(facet_field).unwrap();
diff --git a/src/functional_test.rs b/src/functional_test.rs
index 7e023c29e..6b3d6ac89 100644
--- a/src/functional_test.rs
+++ b/src/functional_test.rs
@@ -22,6 +22,7 @@ fn test_indexing() {
let schema = schema_builder.build();
let index = Index::create_from_tempdir(schema).unwrap();
+ let reader = index.reader();
let mut rng = thread_rng();
@@ -36,8 +37,8 @@ fn test_indexing() {
index_writer.commit().expect("Commit failed");
committed_docs.extend(&uncommitted_docs);
uncommitted_docs.clear();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
// check that everything is correct.
check_index_content(&searcher, &committed_docs);
} else {
diff --git a/src/indexer/index_writer.rs b/src/indexer/index_writer.rs
index d2a2f02c5..ec0d3a0f2 100644
--- a/src/indexer/index_writer.rs
+++ b/src/indexer/index_writer.rs
@@ -722,9 +722,9 @@ mod tests {
let mut schema_builder = schema::Schema::builder();
let text_field = schema_builder.add_text_field("text", schema::TEXT);
let index = Index::create_in_ram(schema_builder.build());
-
+ let reader = index.reader();
let num_docs_containing = |s: &str| {
- let searcher = index.searcher();
+ let searcher = reader.searcher();
let term = Term::from_field_text(text_field, s);
searcher.doc_freq(&term)
};
@@ -742,13 +742,13 @@ mod tests {
index_writer.add_document(doc!(text_field=>"c"));
}
assert!(index_writer.commit().is_ok());
- index.load_searchers().unwrap();
+ reader.load_searchers().unwrap();
assert_eq!(num_docs_containing("a"), 0);
assert_eq!(num_docs_containing("b"), 1);
assert_eq!(num_docs_containing("c"), 1);
}
- index.load_searchers().unwrap();
- index.searcher();
+ reader.load_searchers().unwrap();
+ reader.searcher();
}
#[test]
@@ -756,32 +756,29 @@ mod tests {
let mut schema_builder = schema::Schema::builder();
let text_field = schema_builder.add_text_field("text", schema::TEXT);
let index = Index::create_in_ram(schema_builder.build());
+ let reader = index.reader();
let num_docs_containing = |s: &str| {
- let searcher = index.searcher();
let term_a = Term::from_field_text(text_field, s);
- searcher.doc_freq(&term_a)
+ reader.searcher().doc_freq(&term_a)
};
{
// writing the segment
let mut index_writer = index.writer(12_000_000).unwrap();
// create 8 segments with 100 tiny docs
for _doc in 0..100 {
- let mut doc = Document::default();
- doc.add_text(text_field, "a");
- index_writer.add_document(doc);
+ index_writer.add_document(doc!(text_field=>"a"));
}
index_writer.commit().expect("commit failed");
for _doc in 0..100 {
- let mut doc = Document::default();
- doc.add_text(text_field, "a");
- index_writer.add_document(doc);
+ index_writer.add_document(doc!(text_field=>"a"));
}
// this should create 8 segments and trigger a merge.
index_writer.commit().expect("commit failed");
index_writer
.wait_merging_threads()
.expect("waiting merging thread failed");
- index.load_searchers().unwrap();
+
+ reader.load_searchers().unwrap();
assert_eq!(num_docs_containing("a"), 200);
assert!(index.searchable_segments().unwrap().len() < 8);
@@ -848,11 +845,9 @@ mod tests {
}
index_writer.commit().unwrap();
}
- index.load_searchers().unwrap();
let num_docs_containing = |s: &str| {
- let searcher = index.searcher();
let term_a = Term::from_field_text(text_field, s);
- searcher.doc_freq(&term_a)
+ index.reader().searcher().doc_freq(&term_a)
};
assert_eq!(num_docs_containing("a"), 0);
assert_eq!(num_docs_containing("b"), 100);
@@ -884,11 +879,9 @@ mod tests {
index_writer.add_document(doc!(text_field => "b"));
}
assert!(index_writer.commit().is_err());
- index.load_searchers().unwrap();
let num_docs_containing = |s: &str| {
- let searcher = index.searcher();
let term_a = Term::from_field_text(text_field, s);
- searcher.doc_freq(&term_a)
+ index.reader().searcher().doc_freq(&term_a)
};
assert_eq!(num_docs_containing("a"), 100);
assert_eq!(num_docs_containing("b"), 0);
diff --git a/src/indexer/merger.rs b/src/indexer/merger.rs
index 311240102..d41733074 100644
--- a/src/indexer/merger.rs
+++ b/src/indexer/merger.rs
@@ -675,7 +675,7 @@ mod tests {
let score_field = schema_builder.add_u64_field("score", score_fieldtype);
let bytes_score_field = schema_builder.add_bytes_field("score_bytes");
let index = Index::create_in_ram(schema_builder.build());
-
+ let reader = index.reader();
let add_score_bytes = |doc: &mut Document, score: u32| {
let mut bytes = Vec::new();
bytes
@@ -744,8 +744,8 @@ mod tests {
index_writer.wait_merging_threads().unwrap();
}
{
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
let get_doc_ids = |terms: Vec| {
let query = BooleanQuery::new_multiterms_query(terms);
let top_docs = searcher.search(&query, &TestCollector).unwrap();
@@ -837,7 +837,7 @@ mod tests {
let bytes_score_field = schema_builder.add_bytes_field("score_bytes");
let index = Index::create_in_ram(schema_builder.build());
let mut index_writer = index.writer_with_num_threads(1, 3_000_000).unwrap();
-
+ let reader = index.reader();
let search_term = |searcher: &Searcher, term: Term| {
let collector = FastFieldTestCollector::for_field(score_field);
let bytes_collector = BytesFastFieldTestCollector::for_field(bytes_score_field);
@@ -874,8 +874,8 @@ mod tests {
bytes_score_field => vec![0u8, 0, 0, 3],
));
index_writer.commit().expect("committed");
- index.load_searchers().unwrap();
- let ref searcher = *index.searcher();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
assert_eq!(searcher.num_docs(), 2);
assert_eq!(searcher.segment_readers()[0].num_docs(), 2);
assert_eq!(searcher.segment_readers()[0].max_doc(), 3);
@@ -921,8 +921,8 @@ mod tests {
bytes_score_field => vec![0u8, 0, 27, 88],
));
index_writer.commit().expect("committed");
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
assert_eq!(searcher.segment_readers().len(), 2);
assert_eq!(searcher.num_docs(), 3);
@@ -983,8 +983,8 @@ mod tests {
.expect("Failed to initiate merge")
.wait()
.expect("Merging failed");
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
assert_eq!(searcher.segment_readers().len(), 1);
assert_eq!(searcher.num_docs(), 3);
assert_eq!(searcher.segment_readers()[0].num_docs(), 3);
@@ -1029,8 +1029,8 @@ mod tests {
index_writer.delete_term(Term::from_field_text(text_field, "c"));
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
assert_eq!(searcher.segment_readers().len(), 1);
assert_eq!(searcher.num_docs(), 2);
assert_eq!(searcher.segment_readers()[0].num_docs(), 2);
@@ -1080,9 +1080,9 @@ mod tests {
.expect("Failed to initiate merge")
.wait()
.expect("Merging failed");
- index.load_searchers().unwrap();
+ reader.load_searchers().unwrap();
- let ref searcher = *index.searcher();
+ let searcher = reader.searcher();
assert_eq!(searcher.segment_readers().len(), 1);
assert_eq!(searcher.num_docs(), 2);
assert_eq!(searcher.segment_readers()[0].num_docs(), 2);
@@ -1130,9 +1130,9 @@ mod tests {
let segment_ids = index
.searchable_segment_ids()
.expect("Searchable segments failed.");
- index.load_searchers().unwrap();
+ reader.load_searchers().unwrap();
- let ref searcher = *index.searcher();
+ let searcher = reader.searcher();
assert!(segment_ids.is_empty());
assert!(searcher.segment_readers().is_empty());
assert_eq!(searcher.num_docs(), 0);
@@ -1144,6 +1144,7 @@ mod tests {
let mut schema_builder = schema::Schema::builder();
let facet_field = schema_builder.add_facet_field("facet");
let index = Index::create_in_ram(schema_builder.build());
+ let reader = index.reader();
{
let mut index_writer = index.writer_with_num_threads(1, 3_000_000).unwrap();
let index_doc = |index_writer: &mut IndexWriter, doc_facets: &[&str]| {
@@ -1173,9 +1174,9 @@ mod tests {
index_writer.commit().expect("committed");
}
- index.load_searchers().unwrap();
+ reader.load_searchers().unwrap();
let test_searcher = |expected_num_docs: usize, expected: &[(&str, u64)]| {
- let searcher = index.searcher();
+ let searcher = reader.searcher();
let mut facet_collector = FacetCollector::for_field(facet_field);
facet_collector.add_facet(Facet::from("/top"));
let (count, facet_counts) = searcher
@@ -1217,7 +1218,7 @@ mod tests {
.wait()
.expect("Merging failed");
index_writer.wait_merging_threads().unwrap();
- index.load_searchers().unwrap();
+ reader.load_searchers().unwrap();
test_searcher(
11,
&[
@@ -1238,7 +1239,7 @@ mod tests {
let facet_term = Term::from_facet(facet_field, &facet);
index_writer.delete_term(facet_term);
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
+ reader.load_searchers().unwrap();
test_searcher(
9,
&[
@@ -1263,8 +1264,8 @@ mod tests {
index_writer.commit().expect("commit failed");
index_writer.add_document(doc!(int_field => 1u64));
index_writer.commit().expect("commit failed");
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
assert_eq!(searcher.num_docs(), 2);
index_writer.delete_term(Term::from_field_u64(int_field, 1));
let segment_ids = index
@@ -1275,10 +1276,10 @@ mod tests {
.expect("Failed to initiate merge")
.wait()
.expect("Merging failed");
- index.load_searchers().unwrap();
+ reader.load_searchers().unwrap();
// commit has not been called yet. The document should still be
// there.
- assert_eq!(index.searcher().num_docs(), 2);
+ assert_eq!(reader.searcher().num_docs(), 2);
}
#[test]
@@ -1289,7 +1290,7 @@ mod tests {
.set_indexed();
let int_field = schema_builder.add_u64_field("intvals", int_options);
let index = Index::create_in_ram(schema_builder.build());
-
+ let reader = index.reader();
{
let mut index_writer = index.writer_with_num_threads(1, 3_000_000).unwrap();
let mut doc = Document::default();
@@ -1310,8 +1311,8 @@ mod tests {
.expect("Merging failed");
// assert delete has not been committed
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
assert_eq!(searcher.num_docs(), 2);
index_writer.commit().unwrap();
@@ -1319,8 +1320,8 @@ mod tests {
index_writer.wait_merging_threads().unwrap();
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
assert_eq!(searcher.num_docs(), 0);
}
@@ -1360,9 +1361,10 @@ mod tests {
index_writer.commit().expect("committed");
}
- index.load_searchers().unwrap();
+ let reader = index.reader();
+ reader.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = reader.searcher();
let mut vals: Vec = Vec::new();
@@ -1432,10 +1434,10 @@ mod tests {
index_writer.wait_merging_threads().unwrap();
}
- index.load_searchers().unwrap();
+ reader.load_searchers().unwrap();
{
- let searcher = index.searcher();
+ let searcher = reader.searcher();
println!(
"{:?}",
searcher
diff --git a/src/indexer/segment_updater.rs b/src/indexer/segment_updater.rs
index 9f8e9577f..c5d2359a8 100644
--- a/src/indexer/segment_updater.rs
+++ b/src/indexer/segment_updater.rs
@@ -565,9 +565,8 @@ mod tests {
index_writer.delete_term(term);
assert!(index_writer.commit().is_ok());
}
-
- index.load_searchers().unwrap();
- assert_eq!(index.searcher().num_docs(), 302);
+ let reader = index.reader();
+ assert_eq!(reader.searcher().num_docs(), 302);
{
index_writer
@@ -575,9 +574,9 @@ mod tests {
.expect("waiting for merging threads");
}
- index.load_searchers().unwrap();
- assert_eq!(index.searcher().segment_readers().len(), 1);
- assert_eq!(index.searcher().num_docs(), 302);
+ reader.load_searchers().unwrap();
+ assert_eq!(reader.searcher().segment_readers().len(), 1);
+ assert_eq!(reader.searcher().num_docs(), 302);
}
#[test]
@@ -636,18 +635,18 @@ mod tests {
.expect("waiting for merging threads");
}
- index.load_searchers().unwrap();
- assert_eq!(index.searcher().num_docs(), 0);
+ let reader = index.reader();
+ assert_eq!(reader.searcher().num_docs(), 0);
let seg_ids = index
.searchable_segment_ids()
.expect("Searchable segments failed.");
assert!(seg_ids.is_empty());
- index.load_searchers().unwrap();
- assert_eq!(index.searcher().num_docs(), 0);
+ reader.load_searchers().unwrap();
+ assert_eq!(reader.searcher().num_docs(), 0);
// empty segments should be erased
assert!(index.searchable_segment_metas().unwrap().is_empty());
- assert!(index.searcher().segment_readers().is_empty());
+ assert!(reader.searcher().segment_readers().is_empty());
}
}
diff --git a/src/lib.rs b/src/lib.rs
index cee255652..36922344e 100755
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -390,9 +390,8 @@ mod tests {
index_writer.commit().unwrap();
}
{
- let index_reader = index.reader(ReloadPolicy::MANUAL);
- indexer_reader.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let term_a = Term::from_field_text(text_field, "a");
assert_eq!(searcher.doc_freq(&term_a), 3);
let term_b = Term::from_field_text(text_field, "b");
@@ -419,8 +418,8 @@ mod tests {
index_writer.commit().unwrap();
}
{
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let index_reader = index.reader();
+ let searcher = index_reader.searcher();
let reader = searcher.segment_reader(0);
{
let fieldnorm_reader = reader.get_fieldnorms_reader(text_field);
@@ -455,8 +454,8 @@ mod tests {
index_writer.commit().unwrap();
}
{
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let segment_reader: &SegmentReader = searcher.segment_reader(0);
let fieldnorms_reader = segment_reader.get_fieldnorms_reader(text_field);
assert_eq!(fieldnorms_reader.fieldnorm(0), 3);
@@ -505,8 +504,8 @@ mod tests {
index_writer.commit().unwrap();
}
{
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let reader = searcher.segment_reader(0);
let inverted_index = reader.inverted_index(text_field);
assert!(inverted_index
@@ -541,8 +540,8 @@ mod tests {
index_writer.rollback().unwrap();
}
{
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let index_reader = index.reader();
+ let searcher = index_reader.searcher();
let reader = searcher.segment_reader(0);
let inverted_index = reader.inverted_index(term_abcd.field());
@@ -578,10 +577,10 @@ mod tests {
index_writer.commit().unwrap();
}
{
- index.load_searchers().unwrap();
- let searcher = index.searcher();
- let reader = searcher.segment_reader(0);
- let inverted_index = reader.inverted_index(term_abcd.field());
+ let reader = index.reader();
+ let searcher = reader.searcher();
+ let segment_reader = searcher.segment_reader(0);
+ let inverted_index = segment_reader.inverted_index(term_abcd.field());
assert!(inverted_index
.read_postings(&term_abcd, IndexRecordOption::WithFreqsAndPositions)
.is_none());
@@ -589,25 +588,25 @@ mod tests {
let mut postings = inverted_index
.read_postings(&term_a, IndexRecordOption::WithFreqsAndPositions)
.unwrap();
- assert!(!advance_undeleted(&mut postings, reader));
+ assert!(!advance_undeleted(&mut postings, segment_reader));
}
{
let mut postings = inverted_index
.read_postings(&term_b, IndexRecordOption::WithFreqsAndPositions)
.unwrap();
- assert!(advance_undeleted(&mut postings, reader));
+ assert!(advance_undeleted(&mut postings, segment_reader));
assert_eq!(postings.doc(), 3);
- assert!(advance_undeleted(&mut postings, reader));
+ assert!(advance_undeleted(&mut postings, segment_reader));
assert_eq!(postings.doc(), 4);
- assert!(!advance_undeleted(&mut postings, reader));
+ assert!(!advance_undeleted(&mut postings, segment_reader));
}
{
let mut postings = inverted_index
.read_postings(&term_c, IndexRecordOption::WithFreqsAndPositions)
.unwrap();
- assert!(advance_undeleted(&mut postings, reader));
+ assert!(advance_undeleted(&mut postings, segment_reader));
assert_eq!(postings.doc(), 4);
- assert!(!advance_undeleted(&mut postings, reader));
+ assert!(!advance_undeleted(&mut postings, segment_reader));
}
}
}
@@ -622,8 +621,8 @@ mod tests {
let mut index_writer = index.writer_with_num_threads(1, 3_000_000).unwrap();
index_writer.add_document(doc!(field=>1u64));
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let term = Term::from_field_u64(field, 1u64);
let mut postings = searcher
.segment_reader(0)
@@ -646,8 +645,8 @@ mod tests {
let negative_val = -1i64;
index_writer.add_document(doc!(value_field => negative_val));
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let term = Term::from_field_i64(value_field, negative_val);
let mut postings = searcher
.segment_reader(0)
@@ -669,8 +668,9 @@ mod tests {
let mut index_writer = index.writer_with_num_threads(2, 6_000_000).unwrap();
index_writer.add_document(doc!(text_field=>"a"));
assert!(index_writer.commit().is_ok());
- assert!(index.load_searchers().is_ok());
- let searcher = index.searcher();
+ let reader = index.reader();
+ assert!(reader.load_searchers().is_ok());
+ let searcher = reader.searcher();
let segment_reader = searcher.segment_reader(0);
segment_reader.inverted_index(absent_field); //< should not panic
}
@@ -681,6 +681,7 @@ mod tests {
let text_field = schema_builder.add_text_field("text", TEXT);
let schema = schema_builder.build();
let index = Index::create_in_ram(schema);
+ let reader = index.reader();
// writing the segment
let mut index_writer = index.writer_with_num_threads(2, 6_000_000).unwrap();
@@ -706,8 +707,8 @@ mod tests {
remove_document(&mut index_writer, "38");
remove_document(&mut index_writer, "34");
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
assert_eq!(searcher.num_docs(), 6);
}
@@ -727,8 +728,8 @@ mod tests {
index_writer.commit().unwrap();
}
{
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let index_reader = index.reader();
+ let searcher = index_reader.searcher();
let reader = searcher.segment_reader(0);
let inverted_index = reader.inverted_index(text_field);
let term_abcd = Term::from_field_text(text_field, "abcd");
@@ -752,7 +753,7 @@ mod tests {
let text_field = schema_builder.add_text_field("text", TEXT);
let schema = schema_builder.build();
let index = Index::create_in_ram(schema);
-
+ let reader = index.reader();
{
// writing the segment
let mut index_writer = index.writer_with_num_threads(1, 3_000_000).unwrap();
@@ -762,8 +763,8 @@ mod tests {
index_writer.commit().unwrap();
}
{
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
let get_doc_ids = |terms: Vec| {
let query = BooleanQuery::new_multiterms_query(terms);
let topdocs = searcher.search(&query, &TestCollector).unwrap();
@@ -823,7 +824,7 @@ mod tests {
}
index_writer.commit().unwrap();
}
- index.searcher();
+ index.reader().searcher();
}
#[test]
@@ -860,9 +861,8 @@ mod tests {
index_writer.add_document(document);
index_writer.commit().unwrap();
}
-
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let segment_reader: &SegmentReader = searcher.segment_reader(0);
{
let fast_field_reader_res = segment_reader.fast_field_reader::(text_field);
diff --git a/src/postings/mod.rs b/src/postings/mod.rs
index c94e887a9..5b4b14e78 100644
--- a/src/postings/mod.rs
+++ b/src/postings/mod.rs
@@ -101,9 +101,8 @@ pub mod tests {
}
index_writer.add_document(doc!(title => r#"abc be be be be abc"#));
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let inverted_index = searcher.segment_reader(0u32).inverted_index(title);
let term = Term::from_field_text(title, "abc");
@@ -293,9 +292,8 @@ pub mod tests {
}
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
let term_a = Term::from_field_text(text_field, "a");
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let segment_reader = searcher.segment_reader(0);
let mut postings = segment_reader
.inverted_index(text_field)
@@ -332,10 +330,9 @@ pub mod tests {
}
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
index
};
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let segment_reader = searcher.segment_reader(0);
// check that the basic usage works
@@ -403,8 +400,7 @@ pub mod tests {
index_writer.delete_term(term_0);
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let segment_reader = searcher.segment_reader(0);
// make sure seeking still works
@@ -451,12 +447,9 @@ pub mod tests {
{
let mut index_writer = index.writer_with_num_threads(1, 3_000_000).unwrap();
index_writer.delete_term(term_1);
-
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
-
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
// finally, check that it's empty
{
@@ -512,7 +505,6 @@ pub mod tests {
}
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
index
};
}
diff --git a/src/postings/segment_postings.rs b/src/postings/segment_postings.rs
index a5e260619..9c6f57314 100644
--- a/src/postings/segment_postings.rs
+++ b/src/postings/segment_postings.rs
@@ -775,8 +775,7 @@ mod tests {
last_doc = doc + 1;
}
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let segment_reader = searcher.segment_reader(0);
let inverted_index = segment_reader.inverted_index(int_field);
let term = Term::from_field_u64(int_field, 0u64);
@@ -844,8 +843,7 @@ mod tests {
index_writer.add_document(doc);
}
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let segment_reader = searcher.segment_reader(0);
let mut block_segments;
diff --git a/src/query/all_query.rs b/src/query/all_query.rs
index e6468e2d7..32018956b 100644
--- a/src/query/all_query.rs
+++ b/src/query/all_query.rs
@@ -101,8 +101,9 @@ mod tests {
index_writer.commit().unwrap();
index_writer.add_document(doc!(field=>"ccc"));
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ reader.load_searchers().unwrap();
+ let searcher = reader.searcher();
let weight = AllQuery.weight(&searcher, false).unwrap();
{
let reader = searcher.segment_reader(0);
diff --git a/src/query/boolean_query/mod.rs b/src/query/boolean_query/mod.rs
index b450f7f0a..8fe91ca69 100644
--- a/src/query/boolean_query/mod.rs
+++ b/src/query/boolean_query/mod.rs
@@ -51,7 +51,6 @@ mod tests {
}
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
(index, text_field)
}
@@ -60,7 +59,8 @@ mod tests {
let (index, text_field) = aux_test_helper();
let query_parser = QueryParser::for_index(&index, vec![text_field]);
let query = query_parser.parse_query("(+a +b) d").unwrap();
- assert_eq!(query.count(&*index.searcher()).unwrap(), 3);
+ let searcher = index.reader().searcher();
+ assert_eq!(query.count(&searcher).unwrap(), 3);
}
#[test]
@@ -68,7 +68,7 @@ mod tests {
let (index, text_field) = aux_test_helper();
let query_parser = QueryParser::for_index(&index, vec![text_field]);
let query = query_parser.parse_query("+a").unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let weight = query.weight(&searcher, true).unwrap();
let scorer = weight.scorer(searcher.segment_reader(0u32)).unwrap();
assert!(scorer.is::());
@@ -78,7 +78,7 @@ mod tests {
pub fn test_boolean_termonly_intersection() {
let (index, text_field) = aux_test_helper();
let query_parser = QueryParser::for_index(&index, vec![text_field]);
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
{
let query = query_parser.parse_query("+a +b +c").unwrap();
let weight = query.weight(&searcher, true).unwrap();
@@ -97,7 +97,7 @@ mod tests {
pub fn test_boolean_reqopt() {
let (index, text_field) = aux_test_helper();
let query_parser = QueryParser::for_index(&index, vec![text_field]);
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
{
let query = query_parser.parse_query("+a b").unwrap();
let weight = query.weight(&searcher, true).unwrap();
@@ -126,10 +126,13 @@ mod tests {
query
};
+ let reader = index.reader();
+
let matching_docs = |boolean_query: &Query| {
- let searcher = index.searcher();
- let test_docs = searcher.search(boolean_query, &TestCollector).unwrap();
- test_docs
+ reader
+ .searcher()
+ .search(boolean_query, &TestCollector)
+ .unwrap()
.docs()
.iter()
.cloned()
@@ -185,10 +188,12 @@ mod tests {
let query: Box = Box::new(term_query);
query
};
-
+ let reader = index.reader();
let score_docs = |boolean_query: &Query| {
- let searcher = index.searcher();
- let fruit = searcher.search(boolean_query, &TestCollector).unwrap();
+ let fruit = reader
+ .searcher()
+ .search(boolean_query, &TestCollector)
+ .unwrap();
fruit.scores().to_vec()
};
diff --git a/src/query/fuzzy_query.rs b/src/query/fuzzy_query.rs
index 6539929bf..a1c06a593 100644
--- a/src/query/fuzzy_query.rs
+++ b/src/query/fuzzy_query.rs
@@ -141,8 +141,8 @@ mod test {
));
index_writer.commit().unwrap();
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
{
let term = Term::from_field_text(country_field, "japon");
diff --git a/src/query/phrase_query/mod.rs b/src/query/phrase_query/mod.rs
index 90ae26451..198beed43 100644
--- a/src/query/phrase_query/mod.rs
+++ b/src/query/phrase_query/mod.rs
@@ -31,7 +31,6 @@ mod tests {
}
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
index
}
@@ -46,8 +45,7 @@ mod tests {
]);
let schema = index.schema();
let text_field = schema.get_field("text").unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let test_query = |texts: Vec<&str>| {
let terms: Vec = texts
.iter()
@@ -90,8 +88,7 @@ mod tests {
index_writer.add_document(doc!(text_field=>"a b c"));
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let phrase_query = PhraseQuery::new(vec![
Term::from_field_text(text_field, "a"),
Term::from_field_text(text_field, "b"),
@@ -115,8 +112,7 @@ mod tests {
let index = create_index(&["a b c", "a b c a b"]);
let schema = index.schema();
let text_field = schema.get_field("text").unwrap();
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let test_query = |texts: Vec<&str>| {
let terms: Vec = texts
.iter()
@@ -148,8 +144,7 @@ mod tests {
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let test_query = |texts: Vec<&str>| {
let terms: Vec = texts
.iter()
@@ -177,8 +172,7 @@ mod tests {
index_writer.add_document(doc!(text_field=>"a b c d e f g h"));
assert!(index_writer.commit().is_ok());
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let test_query = |texts: Vec<(usize, &str)>| {
let terms: Vec<(usize, Term)> = texts
.iter()
diff --git a/src/query/range_query.rs b/src/query/range_query.rs
index bf5b37967..84c519b75 100644
--- a/src/query/range_query.rs
+++ b/src/query/range_query.rs
@@ -316,8 +316,8 @@ mod tests {
}
index_writer.commit().unwrap();
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let docs_in_the_sixties = RangeQuery::new_u64(year_field, 1960u64..1970u64);
@@ -355,8 +355,8 @@ mod tests {
index_writer.commit().unwrap();
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let count_multiples =
|range_query: RangeQuery| searcher.search(&range_query, &Count).unwrap();
diff --git a/src/query/regex_query.rs b/src/query/regex_query.rs
index caa8f080a..28f3f4082 100644
--- a/src/query/regex_query.rs
+++ b/src/query/regex_query.rs
@@ -108,8 +108,8 @@ mod test {
));
index_writer.commit().unwrap();
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
{
let regex_query = RegexQuery::new("jap[ao]n".to_string(), country_field);
let scored_docs = searcher
diff --git a/src/query/term_query/mod.rs b/src/query/term_query/mod.rs
index edc4af411..7b4c845a6 100644
--- a/src/query/term_query/mod.rs
+++ b/src/query/term_query/mod.rs
@@ -32,9 +32,7 @@ mod tests {
}
assert!(index_writer.commit().is_ok());
}
-
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let term_query = TermQuery::new(
Term::from_field_text(text_field, "a"),
IndexRecordOption::Basic,
@@ -65,8 +63,7 @@ mod tests {
index_writer.add_document(doc!(left_field => "left4 left1"));
index_writer.commit().unwrap();
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
{
let term = Term::from_field_text(left_field, "left2");
let term_query = TermQuery::new(term, IndexRecordOption::WithFreqs);
diff --git a/src/reader/mod.rs b/src/reader/mod.rs
index d1ad22b41..f70042749 100644
--- a/src/reader/mod.rs
+++ b/src/reader/mod.rs
@@ -32,11 +32,25 @@ impl IndexReaderBuilder {
index,
}
}
+
+ pub fn reload_policy(mut self, reload_policy: ReloadPolicy) -> IndexReaderBuilder {
+ self.reload_policy = reload_policy;
+ self
+ }
+
+ pub fn num_searchers(mut self, num_searchers: usize) -> IndexReaderBuilder {
+ self.num_searchers = num_searchers;
+ self
+ }
}
impl Into for IndexReaderBuilder {
fn into(self) -> IndexReader {
- IndexReader::new(self.index, self.num_searchers, self.reload_policy)
+ let reader = IndexReader::new(self.index, self.num_searchers, self.reload_policy);
+ if let Err(err) = reader.load_searchers() {
+ error!("Failed to load searchers.");
+ }
+ reader
}
}
diff --git a/src/snippet/mod.rs b/src/snippet/mod.rs
index 8a3895acb..99bd8d4e0 100644
--- a/src/snippet/mod.rs
+++ b/src/snippet/mod.rs
@@ -528,9 +528,8 @@ Survey in 2016, 2017, and 2018."#;
index_writer.add_document(doc!(text_field => "a"));
index_writer.add_document(doc!(text_field => "a b"));
index_writer.commit().unwrap();
- index.load_searchers().unwrap();
}
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let query_parser = QueryParser::for_index(&index, vec![text_field]);
{
let query = query_parser.parse_query("e").unwrap();
@@ -587,8 +586,7 @@ Survey in 2016, 2017, and 2018."#;
}
index_writer.commit().unwrap();
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let query_parser = QueryParser::for_index(&index, vec![text_field]);
let query = query_parser.parse_query("rust design").unwrap();
let mut snippet_generator =
diff --git a/src/space_usage/mod.rs b/src/space_usage/mod.rs
index 9ca77637f..1a0ccee9e 100644
--- a/src/space_usage/mod.rs
+++ b/src/space_usage/mod.rs
@@ -305,9 +305,8 @@ mod test {
fn test_empty() {
let schema = Schema::builder().build();
let index = Index::create_in_ram(schema.clone());
-
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let searcher_space_usage = searcher.space_usage();
assert_eq!(0, searcher_space_usage.total());
}
@@ -345,8 +344,8 @@ mod test {
index_writer.commit().unwrap();
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let searcher_space_usage = searcher.space_usage();
assert!(searcher_space_usage.total() > 0);
assert_eq!(1, searcher_space_usage.segments().len());
@@ -385,8 +384,8 @@ mod test {
index_writer.commit().unwrap();
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let searcher_space_usage = searcher.space_usage();
assert!(searcher_space_usage.total() > 0);
assert_eq!(1, searcher_space_usage.segments().len());
@@ -424,9 +423,8 @@ mod test {
index_writer.add_document(doc!(name => "hello hi goodbye"));
index_writer.commit().unwrap();
}
-
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let searcher_space_usage = searcher.space_usage();
assert!(searcher_space_usage.total() > 0);
assert_eq!(1, searcher_space_usage.segments().len());
@@ -472,9 +470,8 @@ mod test {
index_writer2.commit().unwrap();
}
- index.load_searchers().unwrap();
-
- let searcher = index.searcher();
+ let reader = index.reader();
+ let searcher = reader.searcher();
let searcher_space_usage = searcher.space_usage();
assert!(searcher_space_usage.total() > 0);
assert_eq!(1, searcher_space_usage.segments().len());
diff --git a/src/termdict/mod.rs b/src/termdict/mod.rs
index f3157118c..d6c8b35f7 100644
--- a/src/termdict/mod.rs
+++ b/src/termdict/mod.rs
@@ -159,8 +159,7 @@ mod tests {
index_writer.commit().unwrap();
}
}
- index.load_searchers().unwrap();
- let searcher = index.searcher();
+ let searcher = index.reader().searcher();
let field_searcher = searcher.field(text_field);
let mut term_it = field_searcher.terms();