diff --git a/src/collector/count_collector.rs b/src/collector/count_collector.rs index 3389668e6..6931b55fb 100644 --- a/src/collector/count_collector.rs +++ b/src/collector/count_collector.rs @@ -1,7 +1,6 @@ use super::Collector; use crate::collector::SegmentCollector; use crate::DocId; -use crate::Result; use crate::Score; use crate::SegmentLocalId; use crate::SegmentReader; @@ -44,7 +43,11 @@ impl Collector for Count { type Child = SegmentCountCollector; - fn for_segment(&self, _: SegmentLocalId, _: &SegmentReader) -> Result { + fn for_segment( + &self, + _: SegmentLocalId, + _: &SegmentReader, + ) -> crate::Result { Ok(SegmentCountCollector::default()) } @@ -52,7 +55,7 @@ impl Collector for Count { false } - fn merge_fruits(&self, segment_counts: Vec) -> Result { + fn merge_fruits(&self, segment_counts: Vec) -> crate::Result { Ok(segment_counts.into_iter().sum()) } } diff --git a/src/collector/custom_score_top_collector.rs b/src/collector/custom_score_top_collector.rs index c6f3b6bb9..7074ceaf1 100644 --- a/src/collector/custom_score_top_collector.rs +++ b/src/collector/custom_score_top_collector.rs @@ -1,6 +1,5 @@ use crate::collector::top_collector::{TopCollector, TopSegmentCollector}; use crate::collector::{Collector, SegmentCollector}; -use crate::Result; use crate::{DocAddress, DocId, Score, SegmentReader}; pub(crate) struct CustomScoreTopCollector { @@ -42,7 +41,7 @@ pub trait CustomScorer: Sync { type Child: CustomSegmentScorer; /// Builds a child scorer for a specific segment. The child scorer is associated to /// a specific segment. - fn segment_scorer(&self, segment_reader: &SegmentReader) -> Result; + fn segment_scorer(&self, segment_reader: &SegmentReader) -> crate::Result; } impl Collector for CustomScoreTopCollector @@ -58,7 +57,7 @@ where &self, segment_local_id: u32, segment_reader: &SegmentReader, - ) -> Result { + ) -> crate::Result { let segment_scorer = self.custom_scorer.segment_scorer(segment_reader)?; let segment_collector = self .collector @@ -73,7 +72,7 @@ where false } - fn merge_fruits(&self, segment_fruits: Vec) -> Result { + fn merge_fruits(&self, segment_fruits: Vec) -> crate::Result { self.collector.merge_fruits(segment_fruits) } } @@ -111,7 +110,7 @@ where { type Child = T; - fn segment_scorer(&self, segment_reader: &SegmentReader) -> Result { + fn segment_scorer(&self, segment_reader: &SegmentReader) -> crate::Result { Ok((self)(segment_reader)) } } diff --git a/src/collector/facet_collector.rs b/src/collector/facet_collector.rs index 2cbdf023d..800285145 100644 --- a/src/collector/facet_collector.rs +++ b/src/collector/facet_collector.rs @@ -5,7 +5,6 @@ use crate::fastfield::FacetReader; use crate::schema::Facet; use crate::schema::Field; use crate::DocId; -use crate::Result; use crate::Score; use crate::SegmentLocalId; use crate::SegmentReader; @@ -84,9 +83,9 @@ fn facet_depth(facet_bytes: &[u8]) -> usize { /// use tantivy::collector::FacetCollector; /// use tantivy::query::AllQuery; /// use tantivy::schema::{Facet, Schema, TEXT}; -/// use tantivy::{doc, Index, Result}; +/// use tantivy::{doc, Index}; /// -/// fn example() -> Result<()> { +/// fn example() -> tantivy::Result<()> { /// let mut schema_builder = Schema::builder(); /// /// // Facet have their own specific type. @@ -262,7 +261,7 @@ impl Collector for FacetCollector { &self, _: SegmentLocalId, reader: &SegmentReader, - ) -> Result { + ) -> crate::Result { let field_name = reader.schema().get_field_name(self.field); let facet_reader = reader.facet_reader(self.field).ok_or_else(|| { TantivyError::SchemaError(format!("Field {:?} is not a facet field.", field_name)) @@ -328,7 +327,7 @@ impl Collector for FacetCollector { false } - fn merge_fruits(&self, segments_facet_counts: Vec) -> Result { + fn merge_fruits(&self, segments_facet_counts: Vec) -> crate::Result { let mut facet_counts: BTreeMap = BTreeMap::new(); for segment_facet_counts in segments_facet_counts { for (facet, count) in segment_facet_counts.facet_counts { diff --git a/src/collector/mod.rs b/src/collector/mod.rs index f5bfded6e..f32bd73a2 100644 --- a/src/collector/mod.rs +++ b/src/collector/mod.rs @@ -85,7 +85,6 @@ See the `custom_collector` example. */ use crate::DocId; -use crate::Result; use crate::Score; use crate::SegmentLocalId; use crate::SegmentReader; @@ -147,14 +146,14 @@ pub trait Collector: Sync { &self, segment_local_id: SegmentLocalId, segment: &SegmentReader, - ) -> Result; + ) -> crate::Result; /// Returns true iff the collector requires to compute scores for documents. fn requires_scoring(&self) -> bool; /// Combines the fruit associated to the collection of each segments /// into one fruit. - fn merge_fruits(&self, segment_fruits: Vec) -> Result; + fn merge_fruits(&self, segment_fruits: Vec) -> crate::Result; } /// The `SegmentCollector` is the trait in charge of defining the @@ -185,7 +184,11 @@ where type Fruit = (Left::Fruit, Right::Fruit); type Child = (Left::Child, Right::Child); - fn for_segment(&self, segment_local_id: u32, segment: &SegmentReader) -> Result { + fn for_segment( + &self, + segment_local_id: u32, + segment: &SegmentReader, + ) -> crate::Result { let left = self.0.for_segment(segment_local_id, segment)?; let right = self.1.for_segment(segment_local_id, segment)?; Ok((left, right)) @@ -198,7 +201,7 @@ where fn merge_fruits( &self, children: Vec<(Left::Fruit, Right::Fruit)>, - ) -> Result<(Left::Fruit, Right::Fruit)> { + ) -> crate::Result<(Left::Fruit, Right::Fruit)> { let mut left_fruits = vec![]; let mut right_fruits = vec![]; for (left_fruit, right_fruit) in children { @@ -240,7 +243,11 @@ where type Fruit = (One::Fruit, Two::Fruit, Three::Fruit); type Child = (One::Child, Two::Child, Three::Child); - fn for_segment(&self, segment_local_id: u32, segment: &SegmentReader) -> Result { + fn for_segment( + &self, + segment_local_id: u32, + segment: &SegmentReader, + ) -> crate::Result { let one = self.0.for_segment(segment_local_id, segment)?; let two = self.1.for_segment(segment_local_id, segment)?; let three = self.2.for_segment(segment_local_id, segment)?; @@ -251,7 +258,7 @@ where self.0.requires_scoring() || self.1.requires_scoring() || self.2.requires_scoring() } - fn merge_fruits(&self, children: Vec) -> Result { + fn merge_fruits(&self, children: Vec) -> crate::Result { let mut one_fruits = vec![]; let mut two_fruits = vec![]; let mut three_fruits = vec![]; @@ -299,7 +306,11 @@ where type Fruit = (One::Fruit, Two::Fruit, Three::Fruit, Four::Fruit); type Child = (One::Child, Two::Child, Three::Child, Four::Child); - fn for_segment(&self, segment_local_id: u32, segment: &SegmentReader) -> Result { + fn for_segment( + &self, + segment_local_id: u32, + segment: &SegmentReader, + ) -> crate::Result { let one = self.0.for_segment(segment_local_id, segment)?; let two = self.1.for_segment(segment_local_id, segment)?; let three = self.2.for_segment(segment_local_id, segment)?; @@ -314,7 +325,7 @@ where || self.3.requires_scoring() } - fn merge_fruits(&self, children: Vec) -> Result { + fn merge_fruits(&self, children: Vec) -> crate::Result { let mut one_fruits = vec![]; let mut two_fruits = vec![]; let mut three_fruits = vec![]; diff --git a/src/collector/multi_collector.rs b/src/collector/multi_collector.rs index 8956fa2e7..bb8d5759d 100644 --- a/src/collector/multi_collector.rs +++ b/src/collector/multi_collector.rs @@ -2,7 +2,6 @@ use super::Collector; use super::SegmentCollector; use crate::collector::Fruit; use crate::DocId; -use crate::Result; use crate::Score; use crate::SegmentLocalId; use crate::SegmentReader; @@ -24,7 +23,7 @@ impl Collector for CollectorWrapper { &self, segment_local_id: u32, reader: &SegmentReader, - ) -> Result> { + ) -> crate::Result> { let child = self.0.for_segment(segment_local_id, reader)?; Ok(Box::new(SegmentCollectorWrapper(child))) } @@ -33,7 +32,10 @@ impl Collector for CollectorWrapper { self.0.requires_scoring() } - fn merge_fruits(&self, children: Vec<::Fruit>) -> Result> { + fn merge_fruits( + &self, + children: Vec<::Fruit>, + ) -> crate::Result> { let typed_fruit: Vec = children .into_iter() .map(|untyped_fruit| { @@ -44,7 +46,7 @@ impl Collector for CollectorWrapper { TantivyError::InvalidArgument("Failed to cast child fruit.".to_string()) }) }) - .collect::>()?; + .collect::>()?; let merged_fruit = self.0.merge_fruits(typed_fruit)?; Ok(Box::new(merged_fruit)) } @@ -175,12 +177,12 @@ impl<'a> Collector for MultiCollector<'a> { &self, segment_local_id: SegmentLocalId, segment: &SegmentReader, - ) -> Result { + ) -> crate::Result { let children = self .collector_wrappers .iter() .map(|collector_wrapper| collector_wrapper.for_segment(segment_local_id, segment)) - .collect::>>()?; + .collect::>>()?; Ok(MultiCollectorChild { children }) } @@ -191,7 +193,7 @@ impl<'a> Collector for MultiCollector<'a> { .any(Collector::requires_scoring) } - fn merge_fruits(&self, segments_multifruits: Vec) -> Result { + fn merge_fruits(&self, segments_multifruits: Vec) -> crate::Result { let mut segment_fruits_list: Vec>> = (0..self.collector_wrappers.len()) .map(|_| Vec::with_capacity(segments_multifruits.len())) .collect::>(); @@ -209,7 +211,7 @@ impl<'a> Collector for MultiCollector<'a> { .map(|(child_collector, segment_fruits)| { Ok(Some(child_collector.merge_fruits(segment_fruits)?)) }) - .collect::>()?; + .collect::>()?; Ok(MultiFruit { sub_fruits }) } } diff --git a/src/collector/tests.rs b/src/collector/tests.rs index 53c32e6a2..1ffef5d72 100644 --- a/src/collector/tests.rs +++ b/src/collector/tests.rs @@ -55,7 +55,7 @@ impl Collector for TestCollector { &self, segment_id: SegmentLocalId, _reader: &SegmentReader, - ) -> Result { + ) -> crate::Result { Ok(TestSegmentCollector { segment_id, fruit: TestFruit::default(), @@ -66,7 +66,7 @@ impl Collector for TestCollector { self.compute_score } - fn merge_fruits(&self, mut children: Vec) -> Result { + fn merge_fruits(&self, mut children: Vec) -> crate::Result { children.sort_by_key(|fruit| { if fruit.docs().is_empty() { 0 @@ -124,7 +124,7 @@ impl Collector for FastFieldTestCollector { &self, _: SegmentLocalId, segment_reader: &SegmentReader, - ) -> Result { + ) -> crate::Result { let reader = segment_reader .fast_fields() .u64(self.field) @@ -139,7 +139,7 @@ impl Collector for FastFieldTestCollector { false } - fn merge_fruits(&self, children: Vec>) -> Result> { + fn merge_fruits(&self, children: Vec>) -> crate::Result> { Ok(children.into_iter().flat_map(|v| v.into_iter()).collect()) } } @@ -184,7 +184,7 @@ impl Collector for BytesFastFieldTestCollector { &self, _segment_local_id: u32, segment_reader: &SegmentReader, - ) -> Result { + ) -> crate::Result { Ok(BytesFastFieldSegmentCollector { vals: Vec::new(), reader: segment_reader @@ -198,7 +198,7 @@ impl Collector for BytesFastFieldTestCollector { false } - fn merge_fruits(&self, children: Vec>) -> Result> { + fn merge_fruits(&self, children: Vec>) -> crate::Result> { Ok(children.into_iter().flat_map(|c| c.into_iter()).collect()) } } diff --git a/src/collector/top_collector.rs b/src/collector/top_collector.rs index 7290d032b..f3b5742e3 100644 --- a/src/collector/top_collector.rs +++ b/src/collector/top_collector.rs @@ -1,6 +1,5 @@ use crate::DocAddress; use crate::DocId; -use crate::Result; use crate::SegmentLocalId; use crate::SegmentReader; use serde::export::PhantomData; @@ -86,7 +85,7 @@ where pub fn merge_fruits( &self, children: Vec>, - ) -> Result> { + ) -> crate::Result> { if self.limit == 0 { return Ok(Vec::new()); } @@ -113,7 +112,7 @@ where &self, segment_id: SegmentLocalId, _: &SegmentReader, - ) -> Result> { + ) -> crate::Result> { Ok(TopSegmentCollector::new(segment_id, self.limit)) } } diff --git a/src/collector/top_score_collector.rs b/src/collector/top_score_collector.rs index 4f961a09b..6324c0fb4 100644 --- a/src/collector/top_score_collector.rs +++ b/src/collector/top_score_collector.rs @@ -10,7 +10,6 @@ use crate::fastfield::FastFieldReader; use crate::schema::Field; use crate::DocAddress; use crate::DocId; -use crate::Result; use crate::Score; use crate::SegmentLocalId; use crate::SegmentReader; @@ -84,7 +83,9 @@ impl CustomScorer for ScorerByField { .fast_fields() .u64(self.field) .ok_or_else(|| { - crate::Error::SchemaError(format!("Field requested is not a i64/u64 fast field.")) + crate::TantivyError::SchemaError(format!( + "Field requested is not a i64/u64 fast field." + )) })?; Ok(ScorerByFastFieldReader { ff_reader }) } @@ -103,7 +104,7 @@ impl TopDocs { /// /// ```rust /// # use tantivy::schema::{Schema, FAST, TEXT}; - /// # use tantivy::{doc, Index, Result, DocAddress}; + /// # use tantivy::{doc, Index, DocAddress}; /// # use tantivy::query::{Query, QueryParser}; /// use tantivy::Searcher; /// use tantivy::collector::TopDocs; @@ -140,7 +141,7 @@ impl TopDocs { /// fn docs_sorted_by_rating(searcher: &Searcher, /// query: &dyn Query, /// sort_by_field: Field) - /// -> Result> { + /// -> tantivy::Result> { /// /// // This is where we build our topdocs collector /// // @@ -406,7 +407,7 @@ impl Collector for TopDocs { &self, segment_local_id: SegmentLocalId, reader: &SegmentReader, - ) -> Result { + ) -> crate::Result { let collector = self.0.for_segment(segment_local_id, reader)?; Ok(TopScoreSegmentCollector(collector)) } @@ -415,7 +416,10 @@ impl Collector for TopDocs { true } - fn merge_fruits(&self, child_fruits: Vec>) -> Result { + fn merge_fruits( + &self, + child_fruits: Vec>, + ) -> crate::Result { self.0.merge_fruits(child_fruits) } } @@ -609,7 +613,7 @@ mod tests { let segment = searcher.segment_reader(0); let top_collector = TopDocs::with_limit(4).order_by_u64_field(size); let err = top_collector.for_segment(0, segment); - if let Err(crate::Error::SchemaError(msg)) = err { + if let Err(crate::TantivyError::SchemaError(msg)) = err { assert_eq!(msg, "Field requested is not a i64/u64 fast field."); } else { assert!(false); diff --git a/src/core/executor.rs b/src/core/executor.rs index 922ea3950..8ac39a7eb 100644 --- a/src/core/executor.rs +++ b/src/core/executor.rs @@ -1,4 +1,3 @@ -use crate::Result; use crossbeam::channel; use rayon::{ThreadPool, ThreadPoolBuilder}; @@ -23,7 +22,7 @@ impl Executor { } /// Creates an Executor that dispatches the tasks in a thread pool. - pub fn multi_thread(num_threads: usize, prefix: &'static str) -> Result { + pub fn multi_thread(num_threads: usize, prefix: &'static str) -> crate::Result { let pool = ThreadPoolBuilder::new() .num_threads(num_threads) .thread_name(move |num| format!("{}{}", prefix, num)) @@ -39,14 +38,14 @@ impl Executor { A: Send, R: Send, AIterator: Iterator, - F: Sized + Sync + Fn(A) -> Result, + F: Sized + Sync + Fn(A) -> crate::Result, >( &self, f: F, args: AIterator, - ) -> Result> { + ) -> crate::Result> { match self { - Executor::SingleThread => args.map(f).collect::>(), + Executor::SingleThread => args.map(f).collect::>(), Executor::ThreadPool(pool) => { let args_with_indices: Vec<(usize, A)> = args.enumerate().collect(); let num_fruits = args_with_indices.len(); diff --git a/src/core/index.rs b/src/core/index.rs index fe4ce4b72..95bd89f16 100644 --- a/src/core/index.rs +++ b/src/core/index.rs @@ -22,7 +22,6 @@ use crate::schema::FieldType; use crate::schema::Schema; use crate::tokenizer::{TextAnalyzer, TokenizerManager}; use crate::IndexWriter; -use crate::Result; use num_cpus; use std::borrow::BorrowMut; use std::collections::HashSet; @@ -31,7 +30,10 @@ use std::fmt; use std::path::{Path, PathBuf}; use std::sync::Arc; -fn load_metas(directory: &dyn Directory, inventory: &SegmentMetaInventory) -> Result { +fn load_metas( + directory: &dyn Directory, + inventory: &SegmentMetaInventory, +) -> crate::Result { let meta_data = directory.atomic_read(&META_FILEPATH)?; let meta_string = String::from_utf8_lossy(&meta_data); IndexMeta::deserialize(&meta_string, &inventory) @@ -72,14 +74,14 @@ impl Index { /// Replace the default single thread search executor pool /// by a thread pool with a given number of threads. - pub fn set_multithread_executor(&mut self, num_threads: usize) -> Result<()> { + pub fn set_multithread_executor(&mut self, num_threads: usize) -> crate::Result<()> { self.executor = Arc::new(Executor::multi_thread(num_threads, "thrd-tantivy-search-")?); Ok(()) } /// Replace the default single thread search executor pool /// by a thread pool with a given number of threads. - pub fn set_default_multithread_executor(&mut self) -> Result<()> { + pub fn set_default_multithread_executor(&mut self) -> crate::Result<()> { let default_num_threads = num_cpus::get(); self.set_multithread_executor(default_num_threads) } @@ -98,7 +100,10 @@ impl Index { /// /// If a previous index was in this directory, then its meta file will be destroyed. #[cfg(feature = "mmap")] - pub fn create_in_dir>(directory_path: P, schema: Schema) -> Result { + pub fn create_in_dir>( + directory_path: P, + schema: Schema, + ) -> crate::Result { let mmap_directory = MmapDirectory::open(directory_path)?; if Index::exists(&mmap_directory) { return Err(TantivyError::IndexAlreadyExists); @@ -107,7 +112,7 @@ impl Index { } /// Opens or creates a new index in the provided directory - pub fn open_or_create(dir: Dir, schema: Schema) -> Result { + pub fn open_or_create(dir: Dir, schema: Schema) -> crate::Result { if !Index::exists(&dir) { return Index::create(dir, schema); } @@ -130,13 +135,13 @@ impl Index { /// The temp directory is only used for testing the `MmapDirectory`. /// For other unit tests, prefer the `RAMDirectory`, see: `create_in_ram`. #[cfg(feature = "mmap")] - pub fn create_from_tempdir(schema: Schema) -> Result { + pub fn create_from_tempdir(schema: Schema) -> crate::Result { let mmap_directory = MmapDirectory::create_from_tempdir()?; Index::create(mmap_directory, schema) } /// Creates a new index given an implementation of the trait `Directory` - pub fn create(dir: Dir, schema: Schema) -> Result { + pub fn create(dir: Dir, schema: Schema) -> crate::Result { let directory = ManagedDirectory::wrap(dir)?; Index::from_directory(directory, schema) } @@ -144,7 +149,7 @@ impl Index { /// Create a new index from a directory. /// /// This will overwrite existing meta.json - fn from_directory(mut directory: ManagedDirectory, schema: Schema) -> Result { + fn from_directory(mut directory: ManagedDirectory, schema: Schema) -> crate::Result { save_new_metas(schema.clone(), directory.borrow_mut())?; let metas = IndexMeta::with_schema(schema); Index::create_from_metas(directory, &metas, SegmentMetaInventory::default()) @@ -155,7 +160,7 @@ impl Index { directory: ManagedDirectory, metas: &IndexMeta, inventory: SegmentMetaInventory, - ) -> Result { + ) -> crate::Result { let schema = metas.schema.clone(); Ok(Index { directory, @@ -172,7 +177,7 @@ impl Index { } /// Helper to access the tokenizer associated to a specific field. - pub fn tokenizer_for_field(&self, field: Field) -> Result { + pub fn tokenizer_for_field(&self, field: Field) -> crate::Result { let field_entry = self.schema.get_field_entry(field); let field_type = field_entry.field_type(); let tokenizer_manager: &TokenizerManager = self.tokenizers(); @@ -195,7 +200,7 @@ impl Index { /// Create a default `IndexReader` for the given index. /// /// See [`Index.reader_builder()`](#method.reader_builder). - pub fn reader(&self) -> Result { + pub fn reader(&self) -> crate::Result { self.reader_builder().try_into() } @@ -210,7 +215,7 @@ impl Index { /// Opens a new directory from an index path. #[cfg(feature = "mmap")] - pub fn open_in_dir>(directory_path: P) -> Result { + pub fn open_in_dir>(directory_path: P) -> crate::Result { let mmap_directory = MmapDirectory::open(directory_path)?; Index::open(mmap_directory) } @@ -234,7 +239,7 @@ impl Index { } /// Open the index using the provided directory - pub fn open(directory: D) -> Result { + pub fn open(directory: D) -> crate::Result { let directory = ManagedDirectory::wrap(directory)?; let inventory = SegmentMetaInventory::default(); let metas = load_metas(&directory, &inventory)?; @@ -242,7 +247,7 @@ impl Index { } /// Reads the index meta file from the directory. - pub fn load_metas(&self) -> Result { + pub fn load_metas(&self) -> crate::Result { load_metas(self.directory(), &self.inventory) } @@ -270,7 +275,7 @@ impl Index { &self, num_threads: usize, overall_heap_size_in_bytes: usize, - ) -> Result { + ) -> crate::Result { let directory_lock = self .directory .acquire_lock(&INDEX_WRITER_LOCK) @@ -305,7 +310,7 @@ impl Index { /// If the lockfile already exists, returns `Error::FileAlreadyExists`. /// # Panics /// If the heap size per thread is too small, panics. - pub fn writer(&self, overall_heap_size_in_bytes: usize) -> Result { + pub fn writer(&self, overall_heap_size_in_bytes: usize) -> crate::Result { let mut num_threads = num_cpus::get(); let heap_size_in_bytes_per_thread = overall_heap_size_in_bytes / num_threads; if heap_size_in_bytes_per_thread < HEAP_SIZE_MIN { @@ -322,7 +327,7 @@ impl Index { } /// Returns the list of segments that are searchable - pub fn searchable_segments(&self) -> Result> { + pub fn searchable_segments(&self) -> crate::Result> { Ok(self .searchable_segment_metas()? .into_iter() @@ -355,12 +360,12 @@ impl Index { /// Reads the meta.json and returns the list of /// `SegmentMeta` from the last commit. - pub fn searchable_segment_metas(&self) -> Result> { + pub fn searchable_segment_metas(&self) -> crate::Result> { Ok(self.load_metas()?.segments) } /// Returns the list of segment ids that are searchable. - pub fn searchable_segment_ids(&self) -> Result> { + pub fn searchable_segment_ids(&self) -> crate::Result> { Ok(self .searchable_segment_metas()? .iter() @@ -369,7 +374,7 @@ impl Index { } /// Returns the set of corrupted files - pub fn validate_checksum(&self) -> Result> { + pub fn validate_checksum(&self) -> crate::Result> { self.directory.list_damaged().map_err(Into::into) } } diff --git a/src/core/searcher.rs b/src/core/searcher.rs index 326bab61a..cf473e2ef 100644 --- a/src/core/searcher.rs +++ b/src/core/searcher.rs @@ -14,7 +14,6 @@ use crate::store::StoreReader; use crate::termdict::TermMerger; use crate::DocAddress; use crate::Index; -use crate::Result; use std::fmt; use std::sync::Arc; @@ -23,7 +22,7 @@ fn collect_segment( weight: &dyn Weight, segment_ord: u32, segment_reader: &SegmentReader, -) -> Result { +) -> crate::Result { let mut scorer = weight.scorer(segment_reader)?; let mut segment_collector = collector.for_segment(segment_ord as u32, segment_reader)?; if let Some(delete_bitset) = segment_reader.delete_bitset() { @@ -78,7 +77,7 @@ impl Searcher { /// /// The searcher uses the segment ordinal to route the /// the request to the right `Segment`. - pub fn doc(&self, doc_address: DocAddress) -> Result { + pub fn doc(&self, doc_address: DocAddress) -> crate::Result { let DocAddress(segment_local_id, doc_id) = doc_address; let store_reader = &self.store_readers[segment_local_id as usize]; store_reader.get(doc_id) @@ -132,7 +131,11 @@ impl Searcher { /// /// Finally, the Collector merges each of the child collectors into itself for result usability /// by the caller. - pub fn search(&self, query: &dyn Query, collector: &C) -> Result { + pub fn search( + &self, + query: &dyn Query, + collector: &C, + ) -> crate::Result { let executor = self.index.search_executor(); self.search_with_executor(query, collector, executor) } @@ -154,7 +157,7 @@ impl Searcher { query: &dyn Query, collector: &C, executor: &Executor, - ) -> Result { + ) -> crate::Result { let scoring_enabled = collector.requires_scoring(); let weight = query.weight(self, scoring_enabled)?; let segment_readers = self.segment_readers(); diff --git a/src/core/segment.rs b/src/core/segment.rs index 41dc6c91e..8fb30ceae 100644 --- a/src/core/segment.rs +++ b/src/core/segment.rs @@ -8,10 +8,8 @@ use crate::directory::{ReadOnlySource, WritePtr}; use crate::indexer::segment_serializer::SegmentSerializer; use crate::schema::Schema; use crate::Opstamp; -use crate::Result; use std::fmt; use std::path::PathBuf; -use std::result; /// A segment is a piece of the index. #[derive(Clone)] @@ -83,20 +81,14 @@ impl Segment { } /// Open one of the component file for a *regular* read. - pub fn open_read( - &self, - component: SegmentComponent, - ) -> result::Result { + pub fn open_read(&self, component: SegmentComponent) -> Result { let path = self.relative_path(component); let source = self.index.directory().open_read(&path)?; Ok(source) } /// Open one of the component file for *regular* write. - pub fn open_write( - &mut self, - component: SegmentComponent, - ) -> result::Result { + pub fn open_write(&mut self, component: SegmentComponent) -> Result { let path = self.relative_path(component); let write = self.index.directory_mut().open_write(&path)?; Ok(write) @@ -109,5 +101,5 @@ pub trait SerializableSegment { /// /// # Returns /// The number of documents in the segment. - fn write(&self, serializer: SegmentSerializer) -> Result; + fn write(&self, serializer: SegmentSerializer) -> crate::Result; } diff --git a/src/core/segment_reader.rs b/src/core/segment_reader.rs index d10c15fa0..b97d498b8 100644 --- a/src/core/segment_reader.rs +++ b/src/core/segment_reader.rs @@ -16,7 +16,6 @@ use crate::space_usage::SegmentSpaceUsage; use crate::store::StoreReader; use crate::termdict::TermDictionary; use crate::DocId; -use crate::Result; use fail::fail_point; use std::collections::HashMap; use std::fmt; @@ -145,7 +144,7 @@ impl SegmentReader { } /// Open a new segment for reading. - pub fn open(segment: &Segment) -> Result { + pub fn open(segment: &Segment) -> crate::Result { let termdict_source = segment.open_read(SegmentComponent::TERMS)?; let termdict_composite = CompositeFile::open(&termdict_source)?; diff --git a/src/directory/managed_directory.rs b/src/directory/managed_directory.rs index 1874119d5..5b1698d2c 100644 --- a/src/directory/managed_directory.rs +++ b/src/directory/managed_directory.rs @@ -150,7 +150,7 @@ impl ManagedDirectory { } Err(err) => { error!("Failed to acquire lock for GC"); - return Err(crate::Error::from(err)); + return Err(crate::TantivyError::from(err)); } } } diff --git a/src/fastfield/readers.rs b/src/fastfield/readers.rs index 5f5715ef4..d6b39523c 100644 --- a/src/fastfield/readers.rs +++ b/src/fastfield/readers.rs @@ -4,7 +4,6 @@ use crate::fastfield::MultiValueIntFastFieldReader; use crate::fastfield::{FastFieldNotAvailableError, FastFieldReader}; use crate::schema::{Cardinality, Field, FieldType, Schema}; use crate::space_usage::PerFieldSpaceUsage; -use crate::Result; use std::collections::HashMap; /// Provides access to all of the FastFieldReader. @@ -54,7 +53,7 @@ impl FastFieldReaders { pub(crate) fn load_all( schema: &Schema, fast_fields_composite: &CompositeFile, - ) -> Result { + ) -> crate::Result { let mut fast_field_readers = FastFieldReaders { fast_field_i64: Default::default(), fast_field_u64: Default::default(), diff --git a/src/indexer/merger.rs b/src/indexer/merger.rs index 1090e2e30..5a9b1daeb 100644 --- a/src/indexer/merger.rs +++ b/src/indexer/merger.rs @@ -21,8 +21,6 @@ use crate::store::StoreWriter; use crate::termdict::TermMerger; use crate::termdict::TermOrdinal; use crate::DocId; -use crate::Result; -use crate::TantivyError; use itertools::Itertools; use std::cmp; use std::collections::HashMap; @@ -143,7 +141,7 @@ impl DeltaComputer { } impl IndexMerger { - pub fn open(schema: Schema, segments: &[Segment]) -> Result { + pub fn open(schema: Schema, segments: &[Segment]) -> crate::Result { let mut readers = vec![]; let mut max_doc: u32 = 0u32; for segment in segments { @@ -159,7 +157,7 @@ impl IndexMerger { which exceeds the limit {}.", max_doc, MAX_DOC_LIMIT ); - return Err(TantivyError::InvalidArgument(err_msg)); + return Err(crate::TantivyError::InvalidArgument(err_msg)); } Ok(IndexMerger { schema, @@ -168,7 +166,10 @@ impl IndexMerger { }) } - fn write_fieldnorms(&self, fieldnorms_serializer: &mut FieldNormsSerializer) -> Result<()> { + fn write_fieldnorms( + &self, + fieldnorms_serializer: &mut FieldNormsSerializer, + ) -> crate::Result<()> { let fields = FieldNormsWriter::fields_with_fieldnorm(&self.schema); let mut fieldnorms_data = Vec::with_capacity(self.max_doc as usize); for field in fields { @@ -189,7 +190,7 @@ impl IndexMerger { &self, fast_field_serializer: &mut FastFieldSerializer, mut term_ord_mappings: HashMap, - ) -> Result<()> { + ) -> crate::Result<()> { for (field, field_entry) in self.schema.fields() { let field_type = field_entry.field_type(); match *field_type { @@ -234,7 +235,7 @@ impl IndexMerger { &self, field: Field, fast_field_serializer: &mut FastFieldSerializer, - ) -> Result<()> { + ) -> crate::Result<()> { let mut u64_readers = vec![]; let mut min_value = u64::max_value(); let mut max_value = u64::min_value(); @@ -284,7 +285,7 @@ impl IndexMerger { &self, field: Field, fast_field_serializer: &mut FastFieldSerializer, - ) -> Result<()> { + ) -> crate::Result<()> { let mut total_num_vals = 0u64; let mut u64s_readers: Vec> = Vec::new(); @@ -331,7 +332,7 @@ impl IndexMerger { field: Field, term_ordinal_mappings: &TermOrdinalMapping, fast_field_serializer: &mut FastFieldSerializer, - ) -> Result<()> { + ) -> crate::Result<()> { // Multifastfield consists in 2 fastfields. // The first serves as an index into the second one and is stricly increasing. // The second contains the actual values. @@ -371,7 +372,7 @@ impl IndexMerger { &self, field: Field, fast_field_serializer: &mut FastFieldSerializer, - ) -> Result<()> { + ) -> crate::Result<()> { // Multifastfield consists in 2 fastfields. // The first serves as an index into the second one and is stricly increasing. // The second contains the actual values. @@ -436,7 +437,7 @@ impl IndexMerger { &self, field: Field, fast_field_serializer: &mut FastFieldSerializer, - ) -> Result<()> { + ) -> crate::Result<()> { let mut total_num_vals = 0u64; let mut bytes_readers: Vec = Vec::new(); @@ -492,7 +493,7 @@ impl IndexMerger { indexed_field: Field, field_type: &FieldType, serializer: &mut InvertedIndexSerializer, - ) -> Result> { + ) -> crate::Result> { let mut positions_buffer: Vec = Vec::with_capacity(1_000); let mut delta_computer = DeltaComputer::new(); let field_readers = self @@ -646,7 +647,7 @@ impl IndexMerger { fn write_postings( &self, serializer: &mut InvertedIndexSerializer, - ) -> Result> { + ) -> crate::Result> { let mut term_ordinal_mappings = HashMap::new(); for (field, field_entry) in self.schema.fields() { if field_entry.is_indexed() { @@ -660,7 +661,7 @@ impl IndexMerger { Ok(term_ordinal_mappings) } - fn write_storable_fields(&self, store_writer: &mut StoreWriter) -> Result<()> { + fn write_storable_fields(&self, store_writer: &mut StoreWriter) -> crate::Result<()> { for reader in &self.readers { let store_reader = reader.get_store_reader(); if reader.num_deleted_docs() > 0 { @@ -677,7 +678,7 @@ impl IndexMerger { } impl SerializableSegment for IndexMerger { - fn write(&self, mut serializer: SegmentSerializer) -> Result { + fn write(&self, mut serializer: SegmentSerializer) -> crate::Result { let term_ord_mappings = self.write_postings(serializer.get_postings_serializer())?; self.write_fieldnorms(serializer.get_fieldnorms_serializer())?; self.write_fast_fields(serializer.get_fast_field_serializer(), term_ord_mappings)?; diff --git a/src/indexer/prepared_commit.rs b/src/indexer/prepared_commit.rs index e0888f02f..dad89710b 100644 --- a/src/indexer/prepared_commit.rs +++ b/src/indexer/prepared_commit.rs @@ -1,6 +1,5 @@ use super::IndexWriter; use crate::Opstamp; -use crate::Result; use futures::executor::block_on; /// A prepared commit @@ -27,11 +26,11 @@ impl<'a> PreparedCommit<'a> { self.payload = Some(payload.to_string()) } - pub fn abort(self) -> Result { + pub fn abort(self) -> crate::Result { self.index_writer.rollback() } - pub fn commit(self) -> Result { + pub fn commit(self) -> crate::Result { info!("committing {}", self.opstamp); let _ = block_on( self.index_writer diff --git a/src/indexer/segment_manager.rs b/src/indexer/segment_manager.rs index 6df89f1ac..5af52313d 100644 --- a/src/indexer/segment_manager.rs +++ b/src/indexer/segment_manager.rs @@ -4,7 +4,6 @@ use crate::core::SegmentMeta; use crate::error::TantivyError; use crate::indexer::delete_queue::DeleteCursor; use crate::indexer::SegmentEntry; -use crate::Result as TantivyResult; use std::collections::hash_set::HashSet; use std::fmt::{self, Debug, Formatter}; use std::sync::RwLock; @@ -49,7 +48,7 @@ pub struct SegmentManager { } impl Debug for SegmentManager { - fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), fmt::Error> { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { let lock = self.read(); write!( f, @@ -145,7 +144,7 @@ impl SegmentManager { /// Returns an error if some segments are missing, or if /// the `segment_ids` are not either all committed or all /// uncommitted. - pub fn start_merge(&self, segment_ids: &[SegmentId]) -> TantivyResult> { + pub fn start_merge(&self, segment_ids: &[SegmentId]) -> crate::Result> { let registers_lock = self.read(); let mut segment_entries = vec![]; if registers_lock.uncommitted.contains_all(segment_ids) { @@ -188,7 +187,7 @@ impl SegmentManager { .segments_status(before_merge_segment_ids) .ok_or_else(|| { warn!("couldn't find segment in SegmentManager"); - crate::Error::InvalidArgument( + crate::TantivyError::InvalidArgument( "The segments that were merged could not be found in the SegmentManager. \ This is not necessarily a bug, and can happen after a rollback for instance." .to_string(), diff --git a/src/indexer/segment_serializer.rs b/src/indexer/segment_serializer.rs index 94c666e43..d259b6bb5 100644 --- a/src/indexer/segment_serializer.rs +++ b/src/indexer/segment_serializer.rs @@ -1,5 +1,3 @@ -use crate::Result; - use crate::core::Segment; use crate::core::SegmentComponent; use crate::fastfield::FastFieldSerializer; @@ -18,7 +16,7 @@ pub struct SegmentSerializer { impl SegmentSerializer { /// Creates a new `SegmentSerializer`. - pub fn for_segment(segment: &mut Segment) -> Result { + pub fn for_segment(segment: &mut Segment) -> crate::Result { let store_write = segment.open_write(SegmentComponent::STORE)?; let fast_field_write = segment.open_write(SegmentComponent::FASTFIELDS)?; @@ -57,7 +55,7 @@ impl SegmentSerializer { } /// Finalize the segment serialization. - pub fn close(self) -> Result<()> { + pub fn close(self) -> crate::Result<()> { self.fast_field_serializer.close()?; self.postings_serializer.close()?; self.store_writer.close()?; diff --git a/src/indexer/segment_updater.rs b/src/indexer/segment_updater.rs index 16fbc6071..69607a0ce 100644 --- a/src/indexer/segment_updater.rs +++ b/src/indexer/segment_updater.rs @@ -173,14 +173,18 @@ impl SegmentUpdater { .pool_size(1) .create() .map_err(|_| { - crate::Error::SystemError("Failed to spawn segment updater thread".to_string()) + crate::TantivyError::SystemError( + "Failed to spawn segment updater thread".to_string(), + ) })?; let merge_thread_pool = ThreadPoolBuilder::new() .name_prefix("merge_thread") .pool_size(NUM_MERGE_THREADS) .create() .map_err(|_| { - crate::Error::SystemError("Failed to spawn segment merging thread".to_string()) + crate::TantivyError::SystemError( + "Failed to spawn segment merging thread".to_string(), + ) })?; let index_meta = index.load_metas()?; Ok(SegmentUpdater(Arc::new(InnerSegmentUpdater { @@ -222,7 +226,7 @@ impl SegmentUpdater { receiver.unwrap_or_else(|_| { let err_msg = "A segment_updater future did not success. This should never happen.".to_string(); - Err(crate::Error::SystemError(err_msg)) + Err(crate::TantivyError::SystemError(err_msg)) }) } @@ -419,7 +423,7 @@ impl SegmentUpdater { }); Ok(merging_future_recv - .unwrap_or_else(|_| Err(crate::Error::SystemError("Merge failed".to_string())))) + .unwrap_or_else(|_| Err(crate::TantivyError::SystemError("Merge failed".to_string())))) } async fn consider_merge_options(&self) { diff --git a/src/indexer/segment_writer.rs b/src/indexer/segment_writer.rs index 40515bfb0..4b2b1f35d 100644 --- a/src/indexer/segment_writer.rs +++ b/src/indexer/segment_writer.rs @@ -16,15 +16,13 @@ use crate::tokenizer::{FacetTokenizer, TextAnalyzer}; use crate::tokenizer::{TokenStreamChain, Tokenizer}; use crate::DocId; use crate::Opstamp; -use crate::Result; -use crate::TantivyError; use std::io; use std::str; /// Computes the initial size of the hash table. /// /// Returns a number of bit `b`, such that the recommended initial table size is 2^b. -fn initial_table_size(per_thread_memory_budget: usize) -> Result { +fn initial_table_size(per_thread_memory_budget: usize) -> crate::Result { let table_memory_upper_bound = per_thread_memory_budget / 3; if let Some(limit) = (10..) .take_while(|num_bits: &usize| compute_table_size(*num_bits) < table_memory_upper_bound) @@ -32,7 +30,7 @@ fn initial_table_size(per_thread_memory_budget: usize) -> Result { { Ok(limit.min(19)) // we cap it at 2^19 = 512K. } else { - Err(TantivyError::InvalidArgument( + Err(crate::TantivyError::InvalidArgument( format!("per thread memory budget (={}) is too small. Raise the memory budget or lower the number of threads.", per_thread_memory_budget))) } } @@ -66,7 +64,7 @@ impl SegmentWriter { memory_budget: usize, mut segment: Segment, schema: &Schema, - ) -> Result { + ) -> crate::Result { let table_num_bits = initial_table_size(memory_budget)?; let segment_serializer = SegmentSerializer::for_segment(&mut segment)?; let multifield_postings = MultiFieldPostingsWriter::new(schema, table_num_bits); @@ -99,7 +97,7 @@ impl SegmentWriter { /// /// Finalize consumes the `SegmentWriter`, so that it cannot /// be used afterwards. - pub fn finalize(mut self) -> Result> { + pub fn finalize(mut self) -> crate::Result> { self.fieldnorms_writer.fill_up_to_max_doc(self.max_doc); write( &self.multifield_postings, @@ -281,7 +279,7 @@ fn write( fast_field_writers: &FastFieldsWriter, fieldnorms_writer: &FieldNormsWriter, mut serializer: SegmentSerializer, -) -> Result<()> { +) -> crate::Result<()> { let term_ord_map = multifield_postings.serialize(serializer.get_postings_serializer())?; fast_field_writers.serialize(serializer.get_fast_field_serializer(), &term_ord_map)?; fieldnorms_writer.serialize(serializer.get_fieldnorms_serializer())?; @@ -290,7 +288,7 @@ fn write( } impl SerializableSegment for SegmentWriter { - fn write(&self, serializer: SegmentSerializer) -> Result { + fn write(&self, serializer: SegmentSerializer) -> crate::Result { let max_doc = self.max_doc; write( &self.multifield_postings, diff --git a/src/lib.rs b/src/lib.rs index 5a5fd4daf..89ce3ba56 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -121,13 +121,13 @@ mod functional_test; mod macros; pub use crate::error::TantivyError; - -#[deprecated(since = "0.7.0", note = "please use `tantivy::TantivyError` instead")] -pub use crate::error::TantivyError as Error; pub use chrono; /// Tantivy result. -pub type Result = std::result::Result; +/// +/// Within tantivy, please avoid importing `Result` using `use crate::Result` +/// and instead, refer to this as `crate::Result`. +pub type Result = std::result::Result; /// Tantivy DateTime pub type DateTime = chrono::DateTime; diff --git a/src/postings/postings_writer.rs b/src/postings/postings_writer.rs index e6801dc2b..776c55cc5 100644 --- a/src/postings/postings_writer.rs +++ b/src/postings/postings_writer.rs @@ -11,7 +11,6 @@ use crate::termdict::TermOrdinal; use crate::tokenizer::TokenStream; use crate::tokenizer::{Token, MAX_TOKEN_LEN}; use crate::DocId; -use crate::Result; use fnv::FnvHashMap; use std::collections::HashMap; use std::io; @@ -129,7 +128,7 @@ impl MultiFieldPostingsWriter { pub fn serialize( &self, serializer: &mut InvertedIndexSerializer, - ) -> Result>> { + ) -> crate::Result>> { let mut term_offsets: Vec<(&[u8], Addr, UnorderedTermId)> = self.term_index.iter().collect(); term_offsets.sort_unstable_by_key(|&(k, _, _)| k); diff --git a/src/postings/serializer.rs b/src/postings/serializer.rs index 79e436192..ac619b52b 100644 --- a/src/postings/serializer.rs +++ b/src/postings/serializer.rs @@ -11,7 +11,6 @@ use crate::schema::Schema; use crate::schema::{Field, FieldEntry, FieldType}; use crate::termdict::{TermDictionaryBuilder, TermOrdinal}; use crate::DocId; -use crate::Result; use std::io::{self, Write}; /// `InvertedIndexSerializer` is in charge of serializing @@ -61,7 +60,7 @@ impl InvertedIndexSerializer { positions_write: CompositeWrite, positionsidx_write: CompositeWrite, schema: Schema, - ) -> Result { + ) -> crate::Result { Ok(InvertedIndexSerializer { terms_write, postings_write, @@ -72,7 +71,7 @@ impl InvertedIndexSerializer { } /// Open a new `PostingsSerializer` for the given segment - pub fn open(segment: &mut Segment) -> Result { + pub fn open(segment: &mut Segment) -> crate::Result { use crate::SegmentComponent::{POSITIONS, POSITIONSSKIP, POSTINGS, TERMS}; InvertedIndexSerializer::create( CompositeWrite::wrap(segment.open_write(TERMS)?), diff --git a/src/query/all_query.rs b/src/query/all_query.rs index c9f194ca1..178e6a7b5 100644 --- a/src/query/all_query.rs +++ b/src/query/all_query.rs @@ -4,7 +4,6 @@ use crate::docset::DocSet; use crate::query::explanation::does_not_match; use crate::query::{Explanation, Query, Scorer, Weight}; use crate::DocId; -use crate::Result; use crate::Score; /// Query that matches all of the documents. @@ -14,7 +13,7 @@ use crate::Score; pub struct AllQuery; impl Query for AllQuery { - fn weight(&self, _: &Searcher, _: bool) -> Result> { + fn weight(&self, _: &Searcher, _: bool) -> crate::Result> { Ok(Box::new(AllWeight)) } } @@ -23,7 +22,7 @@ impl Query for AllQuery { pub struct AllWeight; impl Weight for AllWeight { - fn scorer(&self, reader: &SegmentReader) -> Result> { + fn scorer(&self, reader: &SegmentReader) -> crate::Result> { Ok(Box::new(AllScorer { state: State::NotStarted, doc: 0u32, @@ -31,7 +30,7 @@ impl Weight for AllWeight { })) } - fn explain(&self, reader: &SegmentReader, doc: DocId) -> Result { + fn explain(&self, reader: &SegmentReader, doc: DocId) -> crate::Result { if doc >= reader.max_doc() { return Err(does_not_match(doc)); } diff --git a/src/query/boolean_query/boolean_query.rs b/src/query/boolean_query/boolean_query.rs index 54d367343..de9a40ba4 100644 --- a/src/query/boolean_query/boolean_query.rs +++ b/src/query/boolean_query/boolean_query.rs @@ -5,7 +5,6 @@ use crate::query::TermQuery; use crate::query::Weight; use crate::schema::IndexRecordOption; use crate::schema::Term; -use crate::Result; use crate::Searcher; use std::collections::BTreeSet; @@ -30,9 +29,9 @@ use std::collections::BTreeSet; ///use tantivy::query::{BooleanQuery, Occur, PhraseQuery, Query, TermQuery}; ///use tantivy::schema::{IndexRecordOption, Schema, TEXT}; ///use tantivy::Term; -///use tantivy::{Index, Result}; +///use tantivy::Index; /// -///fn main() -> Result<()> { +///fn main() -> tantivy::Result<()> { /// let mut schema_builder = Schema::builder(); /// let title = schema_builder.add_text_field("title", TEXT); /// let body = schema_builder.add_text_field("body", TEXT); @@ -149,14 +148,14 @@ impl From)>> for BooleanQuery { } impl Query for BooleanQuery { - fn weight(&self, searcher: &Searcher, scoring_enabled: bool) -> Result> { + fn weight(&self, searcher: &Searcher, scoring_enabled: bool) -> crate::Result> { let sub_weights = self .subqueries .iter() .map(|&(ref occur, ref subquery)| { Ok((*occur, subquery.weight(searcher, scoring_enabled)?)) }) - .collect::>()?; + .collect::>()?; Ok(Box::new(BooleanWeight::new(sub_weights, scoring_enabled))) } diff --git a/src/query/boolean_query/boolean_weight.rs b/src/query/boolean_query/boolean_weight.rs index d44d34862..334bbee23 100644 --- a/src/query/boolean_query/boolean_weight.rs +++ b/src/query/boolean_query/boolean_weight.rs @@ -10,7 +10,6 @@ use crate::query::Scorer; use crate::query::Union; use crate::query::Weight; use crate::query::{intersect_scorers, Explanation}; -use crate::Result; use crate::{DocId, SkipResult}; use std::collections::HashMap; @@ -56,7 +55,7 @@ impl BooleanWeight { fn per_occur_scorers( &self, reader: &SegmentReader, - ) -> Result>>> { + ) -> crate::Result>>> { let mut per_occur_scorers: HashMap>> = HashMap::new(); for &(ref occur, ref subweight) in &self.weights { let sub_scorer: Box = subweight.scorer(reader)?; @@ -71,7 +70,7 @@ impl BooleanWeight { fn complex_scorer( &self, reader: &SegmentReader, - ) -> Result> { + ) -> crate::Result> { let mut per_occur_scorers = self.per_occur_scorers(reader)?; let should_scorer_opt: Option> = per_occur_scorers @@ -113,7 +112,7 @@ impl BooleanWeight { } impl Weight for BooleanWeight { - fn scorer(&self, reader: &SegmentReader) -> Result> { + fn scorer(&self, reader: &SegmentReader) -> crate::Result> { if self.weights.is_empty() { Ok(Box::new(EmptyScorer)) } else if self.weights.len() == 1 { @@ -130,7 +129,7 @@ impl Weight for BooleanWeight { } } - fn explain(&self, reader: &SegmentReader, doc: DocId) -> Result { + fn explain(&self, reader: &SegmentReader, doc: DocId) -> crate::Result { let mut scorer = self.scorer(reader)?; if scorer.skip_next(doc) != SkipResult::Reached { return Err(does_not_match(doc)); diff --git a/src/query/empty_query.rs b/src/query/empty_query.rs index dd7c0973f..d5ee37f1f 100644 --- a/src/query/empty_query.rs +++ b/src/query/empty_query.rs @@ -4,7 +4,6 @@ use crate::query::Weight; use crate::query::{Explanation, Query}; use crate::DocId; use crate::DocSet; -use crate::Result; use crate::Score; use crate::Searcher; use crate::SegmentReader; @@ -16,11 +15,15 @@ use crate::SegmentReader; pub struct EmptyQuery; impl Query for EmptyQuery { - fn weight(&self, _searcher: &Searcher, _scoring_enabled: bool) -> Result> { + fn weight( + &self, + _searcher: &Searcher, + _scoring_enabled: bool, + ) -> crate::Result> { Ok(Box::new(EmptyWeight)) } - fn count(&self, _searcher: &Searcher) -> Result { + fn count(&self, _searcher: &Searcher) -> crate::Result { Ok(0) } } @@ -30,11 +33,11 @@ impl Query for EmptyQuery { /// It is useful for tests and handling edge cases. pub struct EmptyWeight; impl Weight for EmptyWeight { - fn scorer(&self, _reader: &SegmentReader) -> Result> { + fn scorer(&self, _reader: &SegmentReader) -> crate::Result> { Ok(Box::new(EmptyScorer)) } - fn explain(&self, _reader: &SegmentReader, doc: DocId) -> Result { + fn explain(&self, _reader: &SegmentReader, doc: DocId) -> crate::Result { Err(does_not_match(doc)) } } diff --git a/src/query/fuzzy_query.rs b/src/query/fuzzy_query.rs index d50cc8a25..4818828c9 100644 --- a/src/query/fuzzy_query.rs +++ b/src/query/fuzzy_query.rs @@ -1,8 +1,7 @@ -use crate::error::TantivyError::InvalidArgument; use crate::query::{AutomatonWeight, Query, Weight}; use crate::schema::Term; -use crate::Result; use crate::Searcher; +use crate::TantivyError::InvalidArgument; use levenshtein_automata::{LevenshteinAutomatonBuilder, DFA}; use once_cell::sync::Lazy; use std::collections::HashMap; @@ -31,9 +30,9 @@ static LEV_BUILDER: Lazy> = Laz /// use tantivy::collector::{Count, TopDocs}; /// use tantivy::query::FuzzyTermQuery; /// use tantivy::schema::{Schema, TEXT}; -/// use tantivy::{doc, Index, Result, Term}; +/// use tantivy::{doc, Index, Term}; /// -/// fn example() -> Result<()> { +/// fn example() -> tantivy::Result<()> { /// let mut schema_builder = Schema::builder(); /// let title = schema_builder.add_text_field("title", TEXT); /// let schema = schema_builder.build(); @@ -102,7 +101,7 @@ impl FuzzyTermQuery { } } - fn specialized_weight(&self) -> Result> { + fn specialized_weight(&self) -> crate::Result> { // LEV_BUILDER is a HashMap, whose `get` method returns an Option match LEV_BUILDER.get(&(self.distance, false)) { // Unwrap the option and build the Ok(AutomatonWeight) @@ -119,7 +118,11 @@ impl FuzzyTermQuery { } impl Query for FuzzyTermQuery { - fn weight(&self, _searcher: &Searcher, _scoring_enabled: bool) -> Result> { + fn weight( + &self, + _searcher: &Searcher, + _scoring_enabled: bool, + ) -> crate::Result> { Ok(Box::new(self.specialized_weight()?)) } } diff --git a/src/query/phrase_query/phrase_query.rs b/src/query/phrase_query/phrase_query.rs index be95b32ee..1032337d4 100644 --- a/src/query/phrase_query/phrase_query.rs +++ b/src/query/phrase_query/phrase_query.rs @@ -1,12 +1,10 @@ use super::PhraseWeight; use crate::core::searcher::Searcher; -use crate::error::TantivyError; use crate::query::bm25::BM25Weight; use crate::query::Query; use crate::query::Weight; use crate::schema::IndexRecordOption; use crate::schema::{Field, Term}; -use crate::Result; use std::collections::BTreeSet; /// `PhraseQuery` matches a specific sequence of words. @@ -81,7 +79,7 @@ impl PhraseQuery { &self, searcher: &Searcher, scoring_enabled: bool, - ) -> Result { + ) -> crate::Result { let schema = searcher.schema(); let field_entry = schema.get_field_entry(self.field); let has_positions = field_entry @@ -91,7 +89,7 @@ impl PhraseQuery { .unwrap_or(false); if !has_positions { let field_name = field_entry.name(); - return Err(TantivyError::SchemaError(format!( + return Err(crate::TantivyError::SchemaError(format!( "Applied phrase query on field {:?}, which does not have positions indexed", field_name ))); @@ -110,7 +108,7 @@ impl Query for PhraseQuery { /// Create the weight associated to a query. /// /// See [`Weight`](./trait.Weight.html). - fn weight(&self, searcher: &Searcher, scoring_enabled: bool) -> Result> { + fn weight(&self, searcher: &Searcher, scoring_enabled: bool) -> crate::Result> { let phrase_weight = self.phrase_weight(searcher, scoring_enabled)?; Ok(Box::new(phrase_weight)) } diff --git a/src/query/query.rs b/src/query/query.rs index 4b7c89b89..591461623 100644 --- a/src/query/query.rs +++ b/src/query/query.rs @@ -2,7 +2,6 @@ use super::Weight; use crate::core::searcher::Searcher; use crate::query::Explanation; use crate::DocAddress; -use crate::Result; use crate::Term; use downcast_rs::impl_downcast; use std::collections::BTreeSet; @@ -48,17 +47,17 @@ pub trait Query: QueryClone + downcast_rs::Downcast + fmt::Debug { /// can increase performances. /// /// See [`Weight`](./trait.Weight.html). - fn weight(&self, searcher: &Searcher, scoring_enabled: bool) -> Result>; + fn weight(&self, searcher: &Searcher, scoring_enabled: bool) -> crate::Result>; /// Returns an `Explanation` for the score of the document. - fn explain(&self, searcher: &Searcher, doc_address: DocAddress) -> Result { + fn explain(&self, searcher: &Searcher, doc_address: DocAddress) -> crate::Result { let reader = searcher.segment_reader(doc_address.segment_ord()); let weight = self.weight(searcher, true)?; weight.explain(reader, doc_address.doc()) } /// Returns the number of documents matching the query. - fn count(&self, searcher: &Searcher) -> Result { + fn count(&self, searcher: &Searcher) -> crate::Result { let weight = self.weight(searcher, false)?; let mut result = 0; for reader in searcher.segment_readers() { @@ -86,11 +85,11 @@ where } impl Query for Box { - fn weight(&self, searcher: &Searcher, scoring_enabled: bool) -> Result> { + fn weight(&self, searcher: &Searcher, scoring_enabled: bool) -> crate::Result> { self.as_ref().weight(searcher, scoring_enabled) } - fn count(&self, searcher: &Searcher) -> Result { + fn count(&self, searcher: &Searcher) -> crate::Result { self.as_ref().count(searcher) } diff --git a/src/query/regex_query.rs b/src/query/regex_query.rs index 2280ba67e..42c521ce3 100644 --- a/src/query/regex_query.rs +++ b/src/query/regex_query.rs @@ -1,7 +1,6 @@ use crate::error::TantivyError; use crate::query::{AutomatonWeight, Query, Weight}; use crate::schema::Field; -use crate::Result; use crate::Searcher; use std::clone::Clone; use std::sync::Arc; @@ -58,7 +57,7 @@ pub struct RegexQuery { impl RegexQuery { /// Creates a new RegexQuery from a given pattern - pub fn from_pattern(regex_pattern: &str, field: Field) -> Result { + pub fn from_pattern(regex_pattern: &str, field: Field) -> crate::Result { let regex = Regex::new(®ex_pattern) .map_err(|_| TantivyError::InvalidArgument(regex_pattern.to_string()))?; Ok(RegexQuery::from_regex(regex, field)) @@ -78,7 +77,11 @@ impl RegexQuery { } impl Query for RegexQuery { - fn weight(&self, _searcher: &Searcher, _scoring_enabled: bool) -> Result> { + fn weight( + &self, + _searcher: &Searcher, + _scoring_enabled: bool, + ) -> crate::Result> { Ok(Box::new(self.specialized_weight())) } } diff --git a/src/query/term_query/term_query.rs b/src/query/term_query/term_query.rs index 402a1d738..0fb8c596f 100644 --- a/src/query/term_query/term_query.rs +++ b/src/query/term_query/term_query.rs @@ -3,7 +3,6 @@ use crate::query::bm25::BM25Weight; use crate::query::Query; use crate::query::Weight; use crate::schema::IndexRecordOption; -use crate::Result; use crate::Searcher; use crate::Term; use std::collections::BTreeSet; @@ -101,7 +100,7 @@ impl TermQuery { } impl Query for TermQuery { - fn weight(&self, searcher: &Searcher, scoring_enabled: bool) -> Result> { + fn weight(&self, searcher: &Searcher, scoring_enabled: bool) -> crate::Result> { Ok(Box::new(self.specialized_weight(searcher, scoring_enabled))) } fn query_terms(&self, term_set: &mut BTreeSet) { diff --git a/src/reader/mod.rs b/src/reader/mod.rs index 529d95c54..b754fcde6 100644 --- a/src/reader/mod.rs +++ b/src/reader/mod.rs @@ -7,7 +7,6 @@ use crate::directory::Directory; use crate::directory::WatchHandle; use crate::directory::META_LOCK; use crate::Index; -use crate::Result; use crate::Searcher; use crate::SegmentReader; use std::sync::Arc; @@ -62,7 +61,7 @@ impl IndexReaderBuilder { /// to open different segment readers. It may take hundreds of milliseconds /// of time and it may return an error. /// TODO(pmasurel) Use the `TryInto` trait once it is available in stable. - pub fn try_into(self) -> Result { + pub fn try_into(self) -> crate::Result { let inner_reader = InnerIndexReader { index: self.index, num_searchers: self.num_searchers, @@ -121,14 +120,14 @@ struct InnerIndexReader { } impl InnerIndexReader { - fn reload(&self) -> Result<()> { + fn reload(&self) -> crate::Result<()> { let segment_readers: Vec = { let _meta_lock = self.index.directory().acquire_lock(&META_LOCK)?; let searchable_segments = self.searchable_segments()?; searchable_segments .iter() .map(SegmentReader::open) - .collect::>()? + .collect::>()? }; let schema = self.index.schema(); let searchers = (0..self.num_searchers) @@ -139,7 +138,7 @@ impl InnerIndexReader { } /// Returns the list of segments that are searchable - fn searchable_segments(&self) -> Result> { + fn searchable_segments(&self) -> crate::Result> { self.index.searchable_segments() } @@ -176,7 +175,7 @@ impl IndexReader { /// /// This automatic reload can take 10s of milliseconds to kick in however, and in unit tests /// it can be nice to deterministically force the reload of searchers. - pub fn reload(&self) -> Result<()> { + pub fn reload(&self) -> crate::Result<()> { self.inner.reload() } diff --git a/src/snippet/mod.rs b/src/snippet/mod.rs index ce50b1de1..3d4317c95 100644 --- a/src/snippet/mod.rs +++ b/src/snippet/mod.rs @@ -3,7 +3,6 @@ use crate::schema::Field; use crate::schema::Value; use crate::tokenizer::{TextAnalyzer, Token}; use crate::Document; -use crate::Result; use crate::Searcher; use htmlescape::encode_minimal; use std::cmp::Ordering; @@ -261,7 +260,7 @@ impl SnippetGenerator { searcher: &Searcher, query: &dyn Query, field: Field, - ) -> Result { + ) -> crate::Result { let mut terms = BTreeSet::new(); query.query_terms(&mut terms); let terms_text: BTreeMap = terms diff --git a/src/store/reader.rs b/src/store/reader.rs index 943120dc4..c6d0dc000 100644 --- a/src/store/reader.rs +++ b/src/store/reader.rs @@ -1,5 +1,3 @@ -use crate::Result; - use super::decompress; use super::skiplist::SkipList; use crate::common::BinarySerializable; @@ -75,7 +73,7 @@ impl StoreReader { /// /// It should not be called to score documents /// for instance. - pub fn get(&self, doc_id: DocId) -> Result { + pub fn get(&self, doc_id: DocId) -> crate::Result { let (first_doc_id, block_offset) = self.block_offset(doc_id); self.read_block(block_offset as usize)?; let current_block_mut = self.current_block.borrow_mut();