@@ -354,49 +354,16 @@ impl IndexMerger {
354
354
. map ( |( _, ff_reader) | ff_reader)
355
355
. collect :: < Vec < _ > > ( ) ;
356
356
357
- struct RemappedFFReader < ' a > {
358
- doc_id_mapping : & ' a SegmentDocIdMapping ,
359
- fast_field_readers : Vec < MultiValuedU128FastFieldReader < u128 > > ,
360
- }
361
- impl < ' a > Column < u128 > for RemappedFFReader < ' a > {
362
- fn get_val ( & self , _idx : u64 ) -> u128 {
363
- // unused by codec
364
- unreachable ! ( )
365
- }
366
-
367
- fn min_value ( & self ) -> u128 {
368
- // unused by codec
369
- unreachable ! ( )
370
- }
371
-
372
- fn max_value ( & self ) -> u128 {
373
- // unused by codec
374
- unreachable ! ( )
375
- }
376
-
377
- fn num_vals ( & self ) -> u64 {
378
- self . doc_id_mapping . len ( ) as u64
379
- }
380
- fn iter < ' b > ( & ' b self ) -> Box < dyn Iterator < Item = u128 > + ' b > {
381
- Box :: new (
382
- self . doc_id_mapping
383
- . iter_old_doc_addrs ( )
384
- . flat_map ( |doc_addr| {
385
- let fast_field_reader =
386
- & self . fast_field_readers [ doc_addr. segment_ord as usize ] ;
387
- let mut out = vec ! [ ] ;
388
- fast_field_reader. get_vals ( doc_addr. doc_id , & mut out) ;
389
- out. into_iter ( )
390
- } ) ,
391
- )
392
- }
393
- }
394
- let column = RemappedFFReader {
395
- doc_id_mapping,
396
- fast_field_readers,
357
+ let iter = || {
358
+ doc_id_mapping. iter_old_doc_addrs ( ) . flat_map ( |doc_addr| {
359
+ let fast_field_reader = & fast_field_readers[ doc_addr. segment_ord as usize ] ;
360
+ let mut out = vec ! [ ] ;
361
+ fast_field_reader. get_vals ( doc_addr. doc_id , & mut out) ;
362
+ out. into_iter ( )
363
+ } )
397
364
} ;
398
365
let field_write = fast_field_serializer. get_field_writer ( field, 1 ) ;
399
- serialize_u128 ( column , field_write) ?;
366
+ serialize_u128 ( iter , doc_id_mapping . len ( ) as u64 , field_write) ?;
400
367
401
368
Ok ( ( ) )
402
369
}
@@ -420,42 +387,14 @@ impl IndexMerger {
420
387
} )
421
388
. collect :: < Vec < _ > > ( ) ;
422
389
423
- struct RemappedFFReader < ' a > {
424
- doc_id_mapping : & ' a SegmentDocIdMapping ,
425
- fast_field_readers : Vec < Arc < dyn Column < u128 > > > ,
426
- }
427
- impl < ' a > Column < u128 > for RemappedFFReader < ' a > {
428
- fn get_val ( & self , _idx : u64 ) -> u128 {
429
- // unused by codec
430
- unreachable ! ( )
431
- }
432
-
433
- fn min_value ( & self ) -> u128 {
434
- // unused by codec
435
- unreachable ! ( )
436
- }
437
-
438
- fn max_value ( & self ) -> u128 {
439
- // unused by codec
440
- unreachable ! ( )
441
- }
442
-
443
- fn num_vals ( & self ) -> u64 {
444
- self . doc_id_mapping . len ( ) as u64
445
- }
446
- fn iter < ' b > ( & ' b self ) -> Box < dyn Iterator < Item = u128 > + ' b > {
447
- Box :: new ( self . doc_id_mapping . iter_old_doc_addrs ( ) . map ( |doc_addr| {
448
- let fast_field_reader = & self . fast_field_readers [ doc_addr. segment_ord as usize ] ;
449
- fast_field_reader. get_val ( doc_addr. doc_id as u64 )
450
- } ) )
451
- }
452
- }
453
- let column = RemappedFFReader {
454
- doc_id_mapping,
455
- fast_field_readers,
456
- } ;
457
390
let field_write = fast_field_serializer. get_field_writer ( field, 0 ) ;
458
- serialize_u128 ( column, field_write) ?;
391
+ let iter = || {
392
+ doc_id_mapping. iter_old_doc_addrs ( ) . map ( |doc_addr| {
393
+ let fast_field_reader = & fast_field_readers[ doc_addr. segment_ord as usize ] ;
394
+ fast_field_reader. get_val ( doc_addr. doc_id as u64 )
395
+ } )
396
+ } ;
397
+ fastfield_codecs:: serialize_u128 ( iter, doc_id_mapping. len ( ) as u64 , field_write) ?;
459
398
Ok ( ( ) )
460
399
}
461
400
0 commit comments