File tree Expand file tree Collapse file tree 2 files changed +19
-3
lines changed Expand file tree Collapse file tree 2 files changed +19
-3
lines changed Original file line number Diff line number Diff line change @@ -114,9 +114,7 @@ where T: PartialOrd + Clone
114
114
}
115
115
116
116
Ok ( top_collector
117
- . into_sorted_vec ( )
118
- . into_iter ( )
119
- . skip ( self . offset )
117
+ . into_sorted_after ( self . offset )
120
118
. map ( |cdoc| ( cdoc. feature , cdoc. doc ) )
121
119
. collect ( ) )
122
120
}
Original file line number Diff line number Diff line change @@ -850,6 +850,24 @@ where
850
850
self . buffer
851
851
}
852
852
853
+ /// Returns the elements between `offset` and `top_n` in sorted order.
854
+ pub fn into_sorted_after (
855
+ mut self ,
856
+ offset : usize ,
857
+ ) -> impl Iterator < Item = ComparableDoc < Score , D , R > > {
858
+ if self . buffer . len ( ) > self . top_n {
859
+ self . truncate_top_n ( ) ;
860
+ }
861
+
862
+ if offset >= self . buffer . len ( ) {
863
+ return vec ! [ ] . into_iter ( ) . skip ( 0 ) ;
864
+ }
865
+
866
+ let ( _, _, remainder) = self . buffer . select_nth_unstable ( offset) ;
867
+ remainder. sort_unstable ( ) ;
868
+ self . buffer . into_iter ( ) . skip ( offset)
869
+ }
870
+
853
871
/// Returns the top n elements in stored order.
854
872
/// Useful if you do not need the elements in sorted order,
855
873
/// for example when merging the results of multiple segments.
You can’t perform that action at this time.
0 commit comments