@@ -132,7 +132,7 @@ use grenad::{CompressionType, Reader, Writer};
132
132
use heed:: types:: { ByteSlice , DecodeIgnore } ;
133
133
use heed:: { BytesDecode , BytesEncode , Error } ;
134
134
use log:: debug;
135
- use roaring:: RoaringBitmap ;
135
+ use roaring:: { IterExt , RoaringBitmap } ;
136
136
use time:: OffsetDateTime ;
137
137
138
138
use crate :: error:: InternalError ;
@@ -301,9 +301,7 @@ fn compute_facet_number_levels<'t>(
301
301
first_level_size,
302
302
level_group_size,
303
303
& mut |bitmaps, _, _| {
304
- for bitmap in bitmaps {
305
- number_document_ids |= bitmap;
306
- }
304
+ number_document_ids |= bitmaps. or ( ) ;
307
305
Ok ( ( ) )
308
306
} ,
309
307
& |_i, ( _field_id, _level, left, _right) | * left,
@@ -316,11 +314,11 @@ fn compute_facet_number_levels<'t>(
316
314
317
315
Ok ( ( subwriters, number_document_ids) )
318
316
} 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 ( ) ? ;
324
322
325
323
Ok ( ( vec ! [ ] , documents_ids) )
326
324
}
@@ -389,11 +387,11 @@ fn compute_facet_strings_levels<'t>(
389
387
390
388
Ok ( ( subwriters, strings_document_ids) )
391
389
} 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 ( ) ? ;
397
395
398
396
Ok ( ( vec ! [ ] , documents_ids) )
399
397
}
0 commit comments