From 8e9296c66faa72f842c950e77e7550887eee1ba0 Mon Sep 17 00:00:00 2001 From: mpostma Date: Sat, 27 Jun 2020 11:36:59 +0200 Subject: [PATCH] simplify bucket sort signature --- meilisearch-core/src/bucket_sort.rs | 51 ++++++++++----------------- meilisearch-core/src/query_builder.rs | 14 ++------ 2 files changed, 20 insertions(+), 45 deletions(-) diff --git a/meilisearch-core/src/bucket_sort.rs b/meilisearch-core/src/bucket_sort.rs index a4bce2503..e94dbb623 100644 --- a/meilisearch-core/src/bucket_sort.rs +++ b/meilisearch-core/src/bucket_sort.rs @@ -19,7 +19,7 @@ use crate::criterion::{Criteria, Context, ContextMut}; use crate::distinct_map::{BufferedDistinctMap, DistinctMap}; use crate::raw_document::RawDocument; use crate::{database::MainT, reordered_attrs::ReorderedAttrs}; -use crate::{store, Document, DocumentId, MResult}; +use crate::{Document, DocumentId, MResult, Index}; use crate::query_tree::{create_query_tree, traverse_query_tree}; use crate::query_tree::{Operation, QueryResult, QueryKind, QueryId, PostingsKey}; use crate::query_tree::Context as QTContext; @@ -42,12 +42,7 @@ pub fn bucket_sort<'c, FI>( filter: Option, criteria: Criteria<'c>, searchable_attrs: Option, - main_store: store::Main, - postings_lists_store: store::PostingsLists, - documents_fields_counts_store: store::DocumentsFieldsCounts, - synonyms_store: store::Synonyms, - prefix_documents_cache_store: store::PrefixDocumentsCache, - prefix_postings_lists_cache_store: store::PrefixPostingsListsCache, + index: &Index, ) -> MResult where FI: Fn(DocumentId) -> bool, @@ -68,26 +63,21 @@ where distinct_size, criteria, searchable_attrs, - main_store, - postings_lists_store, - documents_fields_counts_store, - synonyms_store, - prefix_documents_cache_store, - prefix_postings_lists_cache_store, + index, ); } let mut result = SortResult::default(); - let words_set = main_store.words_fst(reader)?; - let stop_words = main_store.stop_words_fst(reader)?; + let words_set = index.main.words_fst(reader)?; + let stop_words = index.main.stop_words_fst(reader)?; let context = QTContext { words_set, stop_words, - synonyms: synonyms_store, - postings_lists: postings_lists_store, - prefix_postings_lists: prefix_postings_lists_cache_store, + synonyms: index.synonyms, + postings_lists: index.postings_lists, + prefix_postings_lists: index.prefix_postings_lists_cache, }; let (operation, mapping) = create_query_tree(reader, &context, query)?; @@ -156,7 +146,7 @@ where reader, postings_lists: &mut arena, query_mapping: &mapping, - documents_fields_counts_store, + documents_fields_counts_store: index.documents_fields_counts, }; criterion.prepare(ctx, &mut group)?; @@ -189,7 +179,7 @@ where debug!("criterion loop took {:.02?}", before_criterion_loop.elapsed()); debug!("proximity evaluation called {} times", proximity_count.load(Ordering::Relaxed)); - let schema = main_store.schema(reader)?.ok_or(Error::SchemaMissing)?; + let schema = index.main.schema(reader)?.ok_or(Error::SchemaMissing)?; let iter = raw_documents.into_iter().skip(range.start).take(range.len()); let iter = iter.map(|rd| Document::from_raw(rd, &queries_kinds, &arena, searchable_attrs.as_ref(), &schema)); let documents = iter.collect(); @@ -213,12 +203,7 @@ pub fn bucket_sort_with_distinct<'c, FI, FD>( distinct_size: usize, criteria: Criteria<'c>, searchable_attrs: Option, - main_store: store::Main, - postings_lists_store: store::PostingsLists, - documents_fields_counts_store: store::DocumentsFieldsCounts, - synonyms_store: store::Synonyms, - _prefix_documents_cache_store: store::PrefixDocumentsCache, - prefix_postings_lists_cache_store: store::PrefixPostingsListsCache, + index: &Index, ) -> MResult where FI: Fn(DocumentId) -> bool, @@ -226,15 +211,15 @@ where { let mut result = SortResult::default(); - let words_set = main_store.words_fst(reader)?; - let stop_words = main_store.stop_words_fst(reader)?; + let words_set = index.main.words_fst(reader)?; + let stop_words = index.main.stop_words_fst(reader)?; let context = QTContext { words_set, stop_words, - synonyms: synonyms_store, - postings_lists: postings_lists_store, - prefix_postings_lists: prefix_postings_lists_cache_store, + synonyms: index.synonyms, + postings_lists: index.postings_lists, + prefix_postings_lists: index.prefix_postings_lists_cache, }; let (operation, mapping) = create_query_tree(reader, &context, query)?; @@ -313,7 +298,7 @@ where reader, postings_lists: &mut arena, query_mapping: &mapping, - documents_fields_counts_store, + documents_fields_counts_store: index.documents_fields_counts, }; let before_criterion_preparation = Instant::now(); @@ -378,7 +363,7 @@ where // once we classified the documents related to the current // automatons we save that as the next valid result let mut seen = BufferedDistinctMap::new(&mut distinct_map); - let schema = main_store.schema(reader)?.ok_or(Error::SchemaMissing)?; + let schema = index.main.schema(reader)?.ok_or(Error::SchemaMissing)?; let mut documents = Vec::with_capacity(range.len()); for raw_document in raw_documents.into_iter().skip(distinct_raw_offset) { diff --git a/meilisearch-core/src/query_builder.rs b/meilisearch-core/src/query_builder.rs index 72accfcde..cb1c85da7 100644 --- a/meilisearch-core/src/query_builder.rs +++ b/meilisearch-core/src/query_builder.rs @@ -152,12 +152,7 @@ impl<'c, 'f, 'd, 'i> QueryBuilder<'c, 'f, 'd, 'i> { distinct_size, self.criteria, self.searchable_attrs, - self.index.main, - self.index.postings_lists, - self.index.documents_fields_counts, - self.index.synonyms, - self.index.prefix_documents_cache, - self.index.prefix_postings_lists_cache, + self.index, ), None => bucket_sort( reader, @@ -168,12 +163,7 @@ impl<'c, 'f, 'd, 'i> QueryBuilder<'c, 'f, 'd, 'i> { self.filter, self.criteria, self.searchable_attrs, - self.index.main, - self.index.postings_lists, - self.index.documents_fields_counts, - self.index.synonyms, - self.index.prefix_documents_cache, - self.index.prefix_postings_lists_cache, + self.index, ), } }