diff --git a/milli/src/search/criteria/proximity.rs b/milli/src/search/criteria/proximity.rs index 2a46cf5d0..aab46a6a2 100644 --- a/milli/src/search/criteria/proximity.rs +++ b/milli/src/search/criteria/proximity.rs @@ -2,6 +2,7 @@ use std::collections::HashMap; use std::mem::take; use roaring::RoaringBitmap; +use log::debug; use crate::search::query_tree::{maximum_proximity, Operation, Query}; use super::{Candidates, Criterion, CriterionResult, Context, query_docids, query_pair_proximity_docids}; @@ -55,6 +56,12 @@ impl<'t> Criterion for Proximity<'t> { fn next(&mut self) -> anyhow::Result> { use Candidates::{Allowed, Forbidden}; loop { + debug!("Proximity at iteration {} (max {:?}) ({:?})", + self.proximity, + self.query_tree.as_ref().map(|(mp, _)| mp), + self.candidates, + ); + match (&mut self.query_tree, &mut self.candidates) { (_, Allowed(candidates)) if candidates.is_empty() => { self.query_tree = None; diff --git a/milli/src/search/criteria/typo.rs b/milli/src/search/criteria/typo.rs index a62616f08..a48b074cc 100644 --- a/milli/src/search/criteria/typo.rs +++ b/milli/src/search/criteria/typo.rs @@ -2,6 +2,7 @@ use std::{borrow::Cow, collections::HashMap, mem::take}; use anyhow::bail; use roaring::RoaringBitmap; +use log::debug; use crate::search::query_tree::{maximum_typo, Operation, Query, QueryKind}; use crate::search::word_derivations; @@ -59,6 +60,8 @@ impl<'t> Criterion for Typo<'t> { fn next(&mut self) -> anyhow::Result> { use Candidates::{Allowed, Forbidden}; loop { + debug!("Typo at iteration {} ({:?})", self.number_typos, self.candidates); + match (&mut self.query_tree, &mut self.candidates) { (_, Allowed(candidates)) if candidates.is_empty() => { self.query_tree = None; diff --git a/milli/src/search/criteria/words.rs b/milli/src/search/criteria/words.rs index bd03ecf97..3b0ecd54a 100644 --- a/milli/src/search/criteria/words.rs +++ b/milli/src/search/criteria/words.rs @@ -2,6 +2,7 @@ use std::collections::HashMap; use std::mem::take; use anyhow::bail; +use log::debug; use roaring::RoaringBitmap; use crate::search::query_tree::Operation; @@ -52,8 +53,9 @@ impl<'t> Words<'t> { impl<'t> Criterion for Words<'t> { fn next(&mut self) -> anyhow::Result> { use Candidates::{Allowed, Forbidden}; - loop { + debug!("Words at iteration {} ({:?})", self.query_trees.len(), self.candidates); + match (self.query_trees.pop(), &mut self.candidates) { (_, Allowed(candidates)) if candidates.is_empty() => { self.query_trees = Vec::new(); diff --git a/milli/src/search/mod.rs b/milli/src/search/mod.rs index aced8bbd1..f3d5af2da 100644 --- a/milli/src/search/mod.rs +++ b/milli/src/search/mod.rs @@ -107,6 +107,8 @@ impl<'a> Search<'a> { let mut initial_candidates = RoaringBitmap::new(); while let Some(CriterionResult { candidates, bucket_candidates, .. }) = criteria.next()? { + debug!("Number of candidates found {}", candidates.len()); + let mut len = candidates.len() as usize; let mut candidates = candidates.into_iter();