Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

Commit abd6d77

Browse files
committed
facet number & strings
1 parent fc4d367 commit abd6d77

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

milli/src/update/facets.rs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ use grenad::{CompressionType, Reader, Writer};
132132
use heed::types::{ByteSlice, DecodeIgnore};
133133
use heed::{BytesDecode, BytesEncode, Error};
134134
use log::debug;
135-
use roaring::RoaringBitmap;
135+
use roaring::{IterExt, RoaringBitmap};
136136
use time::OffsetDateTime;
137137

138138
use crate::error::InternalError;
@@ -301,9 +301,7 @@ fn compute_facet_number_levels<'t>(
301301
first_level_size,
302302
level_group_size,
303303
&mut |bitmaps, _, _| {
304-
for bitmap in bitmaps {
305-
number_document_ids |= bitmap;
306-
}
304+
number_document_ids |= bitmaps.or();
307305
Ok(())
308306
},
309307
&|_i, (_field_id, _level, left, _right)| *left,
@@ -316,11 +314,11 @@ fn compute_facet_number_levels<'t>(
316314

317315
Ok((subwriters, number_document_ids))
318316
} else {
319-
let mut documents_ids = RoaringBitmap::new();
320-
for result in db.range(rtxn, &(level_0_start..))?.take(first_level_size) {
321-
let (_key, docids) = result?;
322-
documents_ids |= docids;
323-
}
317+
let documents_ids = db
318+
.range(rtxn, &(level_0_start..))?
319+
.take(first_level_size)
320+
.map(|result| result.map(|(_key, docids)| docids))
321+
.or()?;
324322

325323
Ok((vec![], documents_ids))
326324
}
@@ -389,11 +387,11 @@ fn compute_facet_strings_levels<'t>(
389387

390388
Ok((subwriters, strings_document_ids))
391389
} else {
392-
let mut documents_ids = RoaringBitmap::new();
393-
for result in db.range(rtxn, &(level_0_start..))?.take(first_level_size) {
394-
let (_key, (_original_value, docids)) = result?;
395-
documents_ids |= docids;
396-
}
390+
let documents_ids = db
391+
.range(rtxn, &(level_0_start..))?
392+
.take(first_level_size)
393+
.map(|result| result.map(|(_key, (_original_value, docids))| docids))
394+
.or()?;
397395

398396
Ok((vec![], documents_ids))
399397
}

0 commit comments

Comments
 (0)