diff options
author | Paul Masurel <paul.masurel@gmail.com> | 2018-05-06 09:48:25 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-06 09:48:25 -0700 |
commit | 99c0b840367c13211c9c9931a249df57f94ce1fd (patch) | |
tree | 5341692f323a330e8aaeb7c4040bec67699ce024 /src/termdict/merger.rs | |
parent | ca74c14647db3563a9f42fccc18b4ac2a4e8caad (diff) |
Integrating #274, #280, #289 into master (#290)
* Integrating bugfixes into master
Closes #274
Closes #280
Closes #289
* Next version will be 0.6
Diffstat (limited to 'src/termdict/merger.rs')
-rw-r--r-- | src/termdict/merger.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/termdict/merger.rs b/src/termdict/merger.rs index bf8496b..7d672ec 100644 --- a/src/termdict/merger.rs +++ b/src/termdict/merger.rs @@ -1,7 +1,8 @@ -use schema::Term; use std::cmp::Ordering; use std::collections::BinaryHeap; use termdict::TermStreamer; +use termdict::TermOrdinal; +use schema::Term; pub struct HeapItem<'a> { pub streamer: TermStreamer<'a>, @@ -28,6 +29,7 @@ impl<'a> Ord for HeapItem<'a> { } } + /// Given a list of sorted term streams, /// returns an iterator over sorted unique terms. /// @@ -43,7 +45,6 @@ pub struct TermMerger<'a> { impl<'a> TermMerger<'a> { /// Stream of merged term dictionary /// - /// pub fn new(streams: Vec<TermStreamer<'a>>) -> TermMerger<'a> { TermMerger { heap: BinaryHeap::new(), @@ -58,6 +59,14 @@ impl<'a> TermMerger<'a> { } } + pub(crate) fn matching_segments<'b: 'a>(&'b self) -> Box<'b + Iterator<Item=(usize, TermOrdinal)>> { + Box::new(self.current_streamers + .iter() + .map(|heap_item| { + (heap_item.segment_ord, heap_item.streamer.term_ord()) + })) + } + fn advance_segments(&mut self) { let streamers = &mut self.current_streamers; let heap = &mut self.heap; |