From 38c4be1c8e6de30b237179fc8eca15f9cf4eb08c Mon Sep 17 00:00:00 2001 From: Louis Dureuil Date: Mon, 16 Sep 2024 15:18:09 +0200 Subject: [PATCH] compute_facets accepts Route argument to fixup error code --- meilisearch/src/search/mod.rs | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/meilisearch/src/search/mod.rs b/meilisearch/src/search/mod.rs index 99245bdc1..13cfb9334 100644 --- a/meilisearch/src/search/mod.rs +++ b/meilisearch/src/search/mod.rs @@ -991,7 +991,15 @@ pub fn perform_search( let (facet_distribution, facet_stats) = facets .map(move |facets| { - compute_facet_distribution_stats(&facets, index, &rtxn, candidates, None, None) + compute_facet_distribution_stats( + &facets, + index, + &rtxn, + candidates, + None, + None, + Route::Search, + ) }) .transpose()? .map(|ComputedFacets { distribution, stats }| (distribution, stats)) @@ -1017,6 +1025,11 @@ pub struct ComputedFacets { pub stats: BTreeMap, } +enum Route { + Search, + MultiSearch, +} + fn compute_facet_distribution_stats>( facets: &[S], index: &Index, @@ -1024,6 +1037,7 @@ fn compute_facet_distribution_stats>( candidates: roaring::RoaringBitmap, override_max_values_per_facet: Option, override_sort_facet_values_by: Option, + route: Route, ) -> Result { let mut facet_distribution = index.facets_distribution(rtxn); @@ -1054,7 +1068,16 @@ fn compute_facet_distribution_stats>( let distribution = facet_distribution .candidates(candidates) .default_order_by(sort_facet_values_by("*")) - .execute()?; + .execute() + .map_err(|error| match (error, route) { + ( + error @ milli::Error::UserError(milli::UserError::InvalidFacetsDistribution { + .. + }), + Route::MultiSearch, + ) => ResponseError::from_msg(error.to_string(), Code::InvalidMultiSearchFacets), + (error, _) => error.into(), + })?; let stats = facet_distribution.compute_stats()?; let stats = stats.into_iter().map(|(k, (min, max))| (k, FacetStats { min, max })).collect(); Ok(ComputedFacets { distribution, stats })