Struct tantivy_columnar::Dictionary
source · pub struct Dictionary<TSSTable = VoidSSTable>where
TSSTable: SSTable,{
pub sstable_slice: FileSlice,
pub sstable_index: SSTableIndex,
/* private fields */
}
Expand description
An SSTable is a sorted map that associates sorted &[u8]
keys
to any kind of typed values.
The SSTable is organized in blocks. In each block, keys and values are encoded separately.
The keys are encoded using incremental encoding. The values on the other hand, are encoded according to a value-specific codec defined in the TSSTable generic argument.
Finally, an index is joined to the Dictionary to make it possible, given a key to identify which block contains this key.
The codec was designed in such a way that the sstable reader is not aware of block, and yet can read any sequence of blocks, as long as the slice of bytes it is given starts and stops at block boundary.
(See also README.md)
Fields§
§sstable_slice: FileSlice
§sstable_index: SSTableIndex
Implementations§
source§impl Dictionary
impl Dictionary
pub fn build_for_tests(terms: &[&str]) -> Dictionary
source§impl<TSSTable> Dictionary<TSSTable>where
TSSTable: SSTable,
impl<TSSTable> Dictionary<TSSTable>where
TSSTable: SSTable,
pub fn builder<W>(
wrt: W
) -> Result<Writer<W, <TSSTable as SSTable>::ValueWriter>, Error>where
W: Write,
sourcepub fn file_slice_for_range(
&self,
key_range: impl RangeBounds<[u8]>,
limit: Option<u64>
) -> FileSlice
pub fn file_slice_for_range( &self, key_range: impl RangeBounds<[u8]>, limit: Option<u64> ) -> FileSlice
This function returns a file slice covering a set of sstable blocks
that include the key range passed in arguments. Optionally returns
only block for up to limit
matching terms.
It works by identifying
first_block
: the block containing the start boundary keylast_block
: the block containing the end boundary key.
And then returning the range that spans over all blocks between.
and including first_block and last_block, aka:
[first_block.start_offset .. last_block.end_offset)
Technically this function does not provide the tightest fit, as
for simplification, it treats the start bound of the key_range
as if it was inclusive, even if it is exclusive.
On the rare edge case where a user asks for (start_key, end_key]
and start_key
happens to be the last key of a block, we return a
slice that is the first block was not necessary.
sourcepub fn open(
term_dictionary_file: FileSlice
) -> Result<Dictionary<TSSTable>, Error>
pub fn open( term_dictionary_file: FileSlice ) -> Result<Dictionary<TSSTable>, Error>
Opens a TermDictionary
.
sourcepub fn from_bytes(
owned_bytes: OwnedBytes
) -> Result<Dictionary<TSSTable>, Error>
pub fn from_bytes( owned_bytes: OwnedBytes ) -> Result<Dictionary<TSSTable>, Error>
Creates a term dictionary from the supplied bytes.
sourcepub fn empty() -> Dictionary<TSSTable>
pub fn empty() -> Dictionary<TSSTable>
Creates an empty term dictionary which contains no terms.
sourcepub fn num_terms(&self) -> usize
pub fn num_terms(&self) -> usize
Returns the number of terms in the dictionary.
Term ordinals range from 0 to num_terms() - 1
.
sourcepub fn term_ord<K>(&self, key: K) -> Result<Option<u64>, Error>
pub fn term_ord<K>(&self, key: K) -> Result<Option<u64>, Error>
Returns the ordinal associated with a given term.
sourcepub fn ord_to_term(&self, ord: u64, bytes: &mut Vec<u8>) -> Result<bool, Error>
pub fn ord_to_term(&self, ord: u64, bytes: &mut Vec<u8>) -> Result<bool, Error>
Returns the term associated with a given term ordinal.
Term ordinals are defined as the position of the term in the sorted list of terms.
Returns true if and only if the term has been found.
Regardless of whether the term is found or not, the buffer may be modified.
sourcepub fn term_info_from_ord(
&self,
term_ord: u64
) -> Result<Option<<TSSTable as SSTable>::Value>, Error>
pub fn term_info_from_ord( &self, term_ord: u64 ) -> Result<Option<<TSSTable as SSTable>::Value>, Error>
Returns the number of terms in the dictionary.
sourcepub fn get<K>(
&self,
key: K
) -> Result<Option<<TSSTable as SSTable>::Value>, Error>
pub fn get<K>( &self, key: K ) -> Result<Option<<TSSTable as SSTable>::Value>, Error>
Lookups the value corresponding to the key.
sourcepub async fn get_async<K>(
&self,
key: K
) -> Result<Option<<TSSTable as SSTable>::Value>, Error>
pub async fn get_async<K>( &self, key: K ) -> Result<Option<<TSSTable as SSTable>::Value>, Error>
Lookups the value corresponding to the key.
sourcepub fn range(&self) -> StreamerBuilder<'_, TSSTable>
pub fn range(&self) -> StreamerBuilder<'_, TSSTable>
Returns a range builder, to stream all of the terms within an interval.
Trait Implementations§
source§impl<TSSTable> Clone for Dictionary<TSSTable>
impl<TSSTable> Clone for Dictionary<TSSTable>
source§fn clone(&self) -> Dictionary<TSSTable>
fn clone(&self) -> Dictionary<TSSTable>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<TSSTable> Freeze for Dictionary<TSSTable>
impl<TSSTable = VoidSSTable> !RefUnwindSafe for Dictionary<TSSTable>
impl<TSSTable> Send for Dictionary<TSSTable>where
TSSTable: Send,
impl<TSSTable> Sync for Dictionary<TSSTable>where
TSSTable: Sync,
impl<TSSTable> Unpin for Dictionary<TSSTable>where
TSSTable: Unpin,
impl<TSSTable = VoidSSTable> !UnwindSafe for Dictionary<TSSTable>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.