Use the MultiOps trait for IN operations

This commit is contained in:
Clément Renault 2024-06-05 17:03:57 -04:00
parent 0a9bd398c7
commit 66470b27e6
No known key found for this signature in database
GPG Key ID: F250A4C4E3AE5F5F

View File

@ -367,17 +367,11 @@ impl<'a> Filter<'a> {
FilterCondition::In { fid, els } => {
if crate::is_faceted(fid.value(), filterable_fields) {
let field_ids_map = index.fields_ids_map(rtxn)?;
if let Some(fid) = field_ids_map.id(fid.value()) {
let mut bitmap = RoaringBitmap::new();
for el in els {
let op = Condition::Equal(el.clone());
let el_bitmap =
Self::evaluate_operator(rtxn, index, fid, universe, &op)?;
bitmap |= el_bitmap;
}
Ok(bitmap)
els.iter()
.map(|el| Condition::Equal(el.clone()))
.map(|op| Self::evaluate_operator(rtxn, index, fid, universe, &op))
.union()
} else {
Ok(RoaringBitmap::new())
}