summaryrefslogtreecommitdiffstats
path: root/src/termdict/merger.rs
diff options
context:
space:
mode:
authorPaul Masurel <paul.masurel@gmail.com>2018-05-06 09:48:25 -0700
committerGitHub <noreply@github.com>2018-05-06 09:48:25 -0700
commit99c0b840367c13211c9c9931a249df57f94ce1fd (patch)
tree5341692f323a330e8aaeb7c4040bec67699ce024 /src/termdict/merger.rs
parentca74c14647db3563a9f42fccc18b4ac2a4e8caad (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.rs13
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;