Struct tantivy_sstable::Dictionary

source ·
pub struct Dictionary<TSSTable: SSTable = VoidSSTable> {
    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<VoidSSTable>

source

pub fn build_for_tests(terms: &[&str]) -> Dictionary

source§

impl<TSSTable: SSTable> Dictionary<TSSTable>

source

pub fn builder<W: Write>(wrt: W) -> Result<Writer<W, TSSTable::ValueWriter>>

source

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 key
  • last_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.

source

pub fn open(term_dictionary_file: FileSlice) -> Result<Self>

Opens a TermDictionary.

source

pub fn from_bytes(owned_bytes: OwnedBytes) -> Result<Self>

Creates a term dictionary from the supplied bytes.

source

pub fn empty() -> Self

Creates an empty term dictionary which contains no terms.

source

pub fn num_terms(&self) -> usize

Returns the number of terms in the dictionary. Term ordinals range from 0 to num_terms() - 1.

source

pub fn term_ord<K: AsRef<[u8]>>(&self, key: K) -> Result<Option<TermOrdinal>>

Returns the ordinal associated with a given term.

source

pub fn ord_to_term(&self, ord: TermOrdinal, bytes: &mut Vec<u8>) -> Result<bool>

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.

source

pub fn term_info_from_ord( &self, term_ord: TermOrdinal ) -> Result<Option<TSSTable::Value>>

Returns the number of terms in the dictionary.

source

pub fn get<K: AsRef<[u8]>>(&self, key: K) -> Result<Option<TSSTable::Value>>

Lookups the value corresponding to the key.

source

pub async fn get_async<K: AsRef<[u8]>>( &self, key: K ) -> Result<Option<TSSTable::Value>>

Lookups the value corresponding to the key.

source

pub fn range(&self) -> StreamerBuilder<'_, TSSTable>

Returns a range builder, to stream all of the terms within an interval.

source

pub fn stream(&self) -> Result<Streamer<'_, TSSTable>>

A stream of all the sorted terms.

source

pub fn search<'a, A: Automaton + 'a>( &'a self, automaton: A ) -> StreamerBuilder<'a, TSSTable, A>
where A::State: Clone,

Returns a search builder, to stream all of the terms within the Automaton

Trait Implementations§

source§

impl<TSSTable: Clone + SSTable> Clone for Dictionary<TSSTable>

source§

fn clone(&self) -> Dictionary<TSSTable>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<TSSTable: Debug + SSTable> Debug for Dictionary<TSSTable>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto 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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.