From facfb4b6151482628e82c90f36a19f97d3ff764a Mon Sep 17 00:00:00 2001 From: Kerollmops Date: Tue, 9 Mar 2021 15:55:59 +0100 Subject: [PATCH] Fix the bucket candidates --- milli/src/search/criteria/asc_desc.rs | 6 +++++- milli/src/search/criteria/proximity.rs | 7 ++++++- milli/src/search/criteria/typo.rs | 8 ++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/milli/src/search/criteria/asc_desc.rs b/milli/src/search/criteria/asc_desc.rs index 5b2ec32e8..6b8afad2c 100644 --- a/milli/src/search/criteria/asc_desc.rs +++ b/milli/src/search/criteria/asc_desc.rs @@ -175,6 +175,11 @@ impl<'t> Criterion for AscDesc<'t> { }, (None, None) => take(&mut self.faceted_candidates), }; + if bucket_candidates.is_empty() { + self.bucket_candidates.union_with(&candidates); + } else { + self.bucket_candidates.union_with(&bucket_candidates); + } self.candidates = facet_ordered( self.index, self.rtxn, @@ -183,7 +188,6 @@ impl<'t> Criterion for AscDesc<'t> { self.ascending, candidates, )?; - self.bucket_candidates = bucket_candidates; }, None => return Ok(None), } diff --git a/milli/src/search/criteria/proximity.rs b/milli/src/search/criteria/proximity.rs index cb4fd257b..e5f010177 100644 --- a/milli/src/search/criteria/proximity.rs +++ b/milli/src/search/criteria/proximity.rs @@ -179,10 +179,15 @@ impl<'t> Criterion for Proximity<'t> { (None, None) => RoaringBitmap::new(), }; + if bucket_candidates.is_empty() { + self.bucket_candidates.union_with(&candidates); + } else { + self.bucket_candidates.union_with(&bucket_candidates); + } + self.query_tree = query_tree.map(|op| (maximum_proximity(&op), op)); self.proximity = 0; self.candidates = Candidates::Allowed(candidates); - self.bucket_candidates.union_with(&bucket_candidates); self.plane_sweep_cache = None; }, None => return Ok(None), diff --git a/milli/src/search/criteria/typo.rs b/milli/src/search/criteria/typo.rs index 5acc7a048..b17b7561b 100644 --- a/milli/src/search/criteria/typo.rs +++ b/milli/src/search/criteria/typo.rs @@ -127,16 +127,12 @@ impl<'t> Criterion for Typo<'t> { new_candidates.difference_with(&candidates); candidates.union_with(&new_candidates); self.number_typos += 1; - - let bucket_candidates = match self.parent { - Some(_) => take(&mut self.bucket_candidates), - None => new_candidates.clone(), - }; + self.bucket_candidates.union_with(&new_candidates); return Ok(Some(CriterionResult { query_tree: Some(new_query_tree), candidates: Some(new_candidates), - bucket_candidates, + bucket_candidates: take(&mut self.bucket_candidates), })); } },