feat: Introduce the PositiveUpdate

This commit is contained in:
Clément Renault 2018-11-30 14:31:46 +01:00
parent 8b2a8da8fa
commit 2719f1ad3b
No known key found for this signature in database
GPG key ID: 0151CDAB43460DAE
14 changed files with 251 additions and 204 deletions

View file

@ -1,11 +1,9 @@
use std::collections::BTreeSet;
use std::slice::from_raw_parts;
use std::error::Error;
use std::path::Path;
use std::sync::Arc;
use std::{io, mem};
use byteorder::{NativeEndian, WriteBytesExt};
use fst::raw::MmapReadOnly;
use serde::ser::{Serialize, Serializer};
@ -57,28 +55,3 @@ impl Serialize for DocIds {
self.data.as_ref().serialize(serializer)
}
}
pub struct DocIdsBuilder<W> {
doc_ids: BTreeSet<DocumentId>, // TODO: prefer a linked-list
wrt: W,
}
impl<W: io::Write> DocIdsBuilder<W> {
pub fn new(wrt: W) -> Self {
Self {
doc_ids: BTreeSet::new(),
wrt: wrt,
}
}
pub fn insert(&mut self, doc: DocumentId) -> bool {
self.doc_ids.insert(doc)
}
pub fn into_inner(mut self) -> io::Result<W> {
for id in self.doc_ids {
self.wrt.write_u64::<NativeEndian>(id)?;
}
Ok(self.wrt)
}
}

View file

@ -6,7 +6,7 @@ use std::sync::Arc;
use fst::raw::MmapReadOnly;
pub use self::doc_ids::{DocIds, DocIdsBuilder};
pub use self::doc_ids::DocIds;
pub use self::doc_indexes::{DocIndexes, DocIndexesBuilder, RawDocIndexesBuilder};
#[derive(Clone)]