Fix placeholder search

This commit is contained in:
ManyTheFish 2022-12-14 20:09:47 +01:00
parent 739da9fd4d
commit 3322018c06

View File

@ -39,19 +39,24 @@ impl<D: Distinct> Criterion for Initial<'_, D> {
self.answer self.answer
.take() .take()
.map(|mut answer| { .map(|mut answer| {
if self.exhaustive_number_hits && answer.query_tree.is_some() { if self.exhaustive_number_hits {
// resolve the whole query tree to retrieve an exhaustive list of documents matching the query. // resolve the whole query tree to retrieve an exhaustive list of documents matching the query.
// then remove the potential soft deleted documents. let candidates = answer
let mut candidates = resolve_query_tree( .query_tree
self.ctx, .as_ref()
answer.query_tree.as_ref().unwrap(), .map(|query_tree| resolve_query_tree(self.ctx, query_tree, params.wdcache))
params.wdcache, .transpose()?;
)? - params.excluded_candidates;
// Apply the filters on the documents retrieved with the query tree. // then intersect the candidates with the potential filtered candidates.
if let Some(ref filtered_candidates) = answer.filtered_candidates { let mut candidates = match (candidates, answer.filtered_candidates.take()) {
candidates &= filtered_candidates; (Some(candidates), Some(filtered)) => candidates & filtered,
} (Some(candidates), None) => candidates,
(None, Some(filtered)) => filtered,
(None, None) => self.ctx.documents_ids()?,
};
// then remove the potential soft deleted documents.
candidates -= params.excluded_candidates;
// because the initial_candidates should be an exhaustive count of the matching documents, // because the initial_candidates should be an exhaustive count of the matching documents,
// we precompute the distinct attributes. // we precompute the distinct attributes.