Improve the NOT operator to use the universe when possible

This commit is contained in:
Clément Renault 2024-06-05 16:59:00 -04:00
parent 7967e93c16
commit 0a9bd398c7
No known key found for this signature in database
GPG Key ID: F250A4C4E3AE5F5F

View File

@ -349,8 +349,6 @@ impl<'a> Filter<'a> {
match &self.condition {
FilterCondition::Not(f) => {
// TODO improve the documents_ids to also support intersections at deserialize time.
let all_ids = index.documents_ids(rtxn)?;
let selected = Self::inner_evaluate(
&(f.as_ref().clone()).into(),
rtxn,
@ -358,7 +356,13 @@ impl<'a> Filter<'a> {
filterable_fields,
universe,
)?;
Ok(all_ids - selected)
match universe {
Some(universe) => Ok(universe - selected),
None => {
let all_ids = index.documents_ids(rtxn)?;
Ok(all_ids - selected)
}
}
}
FilterCondition::In { fid, els } => {
if crate::is_faceted(fid.value(), filterable_fields) {