diff --git a/src/core/directory.rs b/src/core/directory.rs index d3b698d83..fb1ab0360 100644 --- a/src/core/directory.rs +++ b/src/core/directory.rs @@ -132,7 +132,7 @@ impl Segment { } } - fn relative_path(&self, component: SegmentComponent) -> PathBuf { + pub fn relative_path(&self, component: SegmentComponent) -> PathBuf { let SegmentId(ref segment_id_str) = self.segment_id; let filename = String::new() + segment_id_str + Segment::path_suffix(component); PathBuf::from(filename) diff --git a/src/core/reader.rs b/src/core/reader.rs index 4c493a637..f482c69bb 100644 --- a/src/core/reader.rs +++ b/src/core/reader.rs @@ -3,7 +3,7 @@ use core::directory::Segment; use core::schema::Term; use fst::Streamer; use fst; -// use fst::raw::{Fst, FstData}; +use fst::raw::Fst; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use std::borrow::Borrow; use std::io::Cursor; @@ -92,23 +92,23 @@ pub struct SegmentIndexReader { } impl SegmentIndexReader { - // - // pub fn open(segment: Segment) -> Result { - // let term_shared_mmap = try!(segment.mmap(SegmentComponent::TERMS)); - // let term_offsets = match Fst::new(FstData::Mmap(term_shared_mmap)).map(fst::Map) { - // Ok(term_offsets) => term_offsets, - // Err(_) => { - // let filepath = segment.relative_path(SegmentComponent::TERMS); - // return Err(Error::FSTFormat(format!("The file {:?} does not seem to be a valid term to offset transducer.", filepath))); - // } - // }; - // let postings_shared_mmap = try!(segment.mmap(SegmentComponent::POSTINGS)); - // Ok(SegmentIndexReader { - // postings_data: postings_shared_mmap, - // term_offsets: term_offsets, - // segment: segment, - // }) - // } + + pub fn open(segment: Segment) -> Result { + let term_shared_mmap = try!(segment.mmap(SegmentComponent::TERMS)); + let term_offsets = match fst::Map::from_mmap(term_shared_mmap) { + Ok(term_offsets) => term_offsets, + Err(_) => { + let filepath = segment.relative_path(SegmentComponent::TERMS); + return Err(Error::FSTFormat(format!("The file {:?} does not seem to be a valid term to offset transducer.", filepath))); + } + }; + let postings_shared_mmap = try!(segment.mmap(SegmentComponent::POSTINGS)); + Ok(SegmentIndexReader { + postings_data: postings_shared_mmap, + term_offsets: term_offsets, + segment: segment, + }) + } }