From b4deb9b8db7af5fe4ac7b36f38f7c35571d6c992 Mon Sep 17 00:00:00 2001 From: Louis Dureuil Date: Tue, 9 Apr 2024 12:03:03 +0200 Subject: [PATCH] filtered_universe accepts index and txn instead of SearchContext --- meilisearch/src/search.rs | 2 +- milli/examples/search.rs | 2 +- milli/src/search/mod.rs | 4 ++-- milli/src/search/new/matches/mod.rs | 2 +- milli/src/search/new/mod.rs | 10 +++++++--- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/meilisearch/src/search.rs b/meilisearch/src/search.rs index 47c2b5f4b..5bbcf1577 100644 --- a/meilisearch/src/search.rs +++ b/meilisearch/src/search.rs @@ -126,7 +126,7 @@ impl SearchKind { Ok(Self::Hybrid { embedder_name, embedder, semantic_ratio }) } - fn embedder( + pub(crate) fn embedder( index_scheduler: &index_scheduler::IndexScheduler, index: &Index, embedder_name: Option<&str>, diff --git a/milli/examples/search.rs b/milli/examples/search.rs index 8640acf42..a8abacdc9 100644 --- a/milli/examples/search.rs +++ b/milli/examples/search.rs @@ -49,7 +49,7 @@ fn main() -> Result<(), Box> { let start = Instant::now(); let mut ctx = SearchContext::new(&index, &txn); - let universe = filtered_universe(&ctx, &None)?; + let universe = filtered_universe(ctx.index, ctx.txn, &None)?; let docs = execute_search( &mut ctx, diff --git a/milli/src/search/mod.rs b/milli/src/search/mod.rs index bab67e6bd..3470caa23 100644 --- a/milli/src/search/mod.rs +++ b/milli/src/search/mod.rs @@ -148,7 +148,7 @@ impl<'a> Search<'a> { pub fn execute_for_candidates(&self, has_vector_search: bool) -> Result { if has_vector_search { let ctx = SearchContext::new(self.index, self.rtxn); - filtered_universe(&ctx, &self.filter) + filtered_universe(ctx.index, ctx.txn, &self.filter) } else { Ok(self.execute()?.candidates) } @@ -161,7 +161,7 @@ impl<'a> Search<'a> { ctx.searchable_attributes(searchable_attributes)?; } - let universe = filtered_universe(&ctx, &self.filter)?; + let universe = filtered_universe(ctx.index, ctx.txn, &self.filter)?; let PartialSearchResult { located_query_terms, candidates, diff --git a/milli/src/search/new/matches/mod.rs b/milli/src/search/new/matches/mod.rs index 2913f206d..9dcdf7b97 100644 --- a/milli/src/search/new/matches/mod.rs +++ b/milli/src/search/new/matches/mod.rs @@ -507,7 +507,7 @@ mod tests { impl<'a> MatcherBuilder<'a> { fn new_test(rtxn: &'a heed::RoTxn, index: &'a TempIndex, query: &str) -> Self { let mut ctx = SearchContext::new(index, rtxn); - let universe = filtered_universe(&ctx, &None).unwrap(); + let universe = filtered_universe(ctx.index, ctx.txn, &None).unwrap(); let crate::search::PartialSearchResult { located_query_terms, .. } = execute_search( &mut ctx, Some(query), diff --git a/milli/src/search/new/mod.rs b/milli/src/search/new/mod.rs index 617068ef8..f2ba5ce5f 100644 --- a/milli/src/search/new/mod.rs +++ b/milli/src/search/new/mod.rs @@ -530,11 +530,15 @@ fn resolve_sort_criteria<'ctx, Query: RankingRuleQueryTrait>( Ok(()) } -pub fn filtered_universe(ctx: &SearchContext, filters: &Option) -> Result { +pub fn filtered_universe( + index: &Index, + txn: &RoTxn<'_>, + filters: &Option, +) -> Result { Ok(if let Some(filters) = filters { - filters.evaluate(ctx.txn, ctx.index)? + filters.evaluate(txn, index)? } else { - ctx.index.documents_ids(ctx.txn)? + index.documents_ids(txn)? }) }