pub struct MemoryBackend { /* private fields */ }Expand description
In-memory FTS backend backed by HashMaps keyed by (tid, collection, …)
tuples.
Uses RefCell for interior mutability so the FtsBackend trait
can use &self uniformly (redb has its own transactional isolation).
Implementations§
Source§impl MemoryBackend
impl MemoryBackend
pub fn new() -> MemoryBackend
Trait Implementations§
Source§impl Debug for MemoryBackend
impl Debug for MemoryBackend
Source§impl Default for MemoryBackend
impl Default for MemoryBackend
Source§fn default() -> MemoryBackend
fn default() -> MemoryBackend
Returns the “default value” for a type. Read more
Source§impl FtsBackend for MemoryBackend
impl FtsBackend for MemoryBackend
Source§type Error = MemoryError
type Error = MemoryError
Error type for backend operations.
Source§fn read_postings(
&self,
tid: u64,
collection: &str,
term: &str,
) -> Result<Vec<Posting>, <MemoryBackend as FtsBackend>::Error>
fn read_postings( &self, tid: u64, collection: &str, term: &str, ) -> Result<Vec<Posting>, <MemoryBackend as FtsBackend>::Error>
Read the posting list for a term in a collection.
Source§fn write_postings(
&self,
tid: u64,
collection: &str,
term: &str,
postings: &[Posting],
) -> Result<(), <MemoryBackend as FtsBackend>::Error>
fn write_postings( &self, tid: u64, collection: &str, term: &str, postings: &[Posting], ) -> Result<(), <MemoryBackend as FtsBackend>::Error>
Write/replace the posting list for a term in a collection.
Source§fn remove_postings(
&self,
tid: u64,
collection: &str,
term: &str,
) -> Result<(), <MemoryBackend as FtsBackend>::Error>
fn remove_postings( &self, tid: u64, collection: &str, term: &str, ) -> Result<(), <MemoryBackend as FtsBackend>::Error>
Remove a term’s posting list entirely.
Source§fn read_doc_length(
&self,
tid: u64,
collection: &str,
doc_id: Surrogate,
) -> Result<Option<u32>, <MemoryBackend as FtsBackend>::Error>
fn read_doc_length( &self, tid: u64, collection: &str, doc_id: Surrogate, ) -> Result<Option<u32>, <MemoryBackend as FtsBackend>::Error>
Read the document length (token count) for a document.
Source§fn write_doc_length(
&self,
tid: u64,
collection: &str,
doc_id: Surrogate,
length: u32,
) -> Result<(), <MemoryBackend as FtsBackend>::Error>
fn write_doc_length( &self, tid: u64, collection: &str, doc_id: Surrogate, length: u32, ) -> Result<(), <MemoryBackend as FtsBackend>::Error>
Write/replace the document length for a document.
Source§fn remove_doc_length(
&self,
tid: u64,
collection: &str,
doc_id: Surrogate,
) -> Result<(), <MemoryBackend as FtsBackend>::Error>
fn remove_doc_length( &self, tid: u64, collection: &str, doc_id: Surrogate, ) -> Result<(), <MemoryBackend as FtsBackend>::Error>
Remove a document’s length entry.
Source§fn collection_terms(
&self,
tid: u64,
collection: &str,
) -> Result<Vec<String>, <MemoryBackend as FtsBackend>::Error>
fn collection_terms( &self, tid: u64, collection: &str, ) -> Result<Vec<String>, <MemoryBackend as FtsBackend>::Error>
Get all term names in a collection (for fuzzy matching).
Source§fn collection_stats(
&self,
tid: u64,
collection: &str,
) -> Result<(u32, u64), <MemoryBackend as FtsBackend>::Error>
fn collection_stats( &self, tid: u64, collection: &str, ) -> Result<(u32, u64), <MemoryBackend as FtsBackend>::Error>
Get total document count and sum of all document lengths for a collection.
Returns
(doc_count, total_token_sum). Read moreSource§fn increment_stats(
&self,
tid: u64,
collection: &str,
doc_len: u32,
) -> Result<(), <MemoryBackend as FtsBackend>::Error>
fn increment_stats( &self, tid: u64, collection: &str, doc_len: u32, ) -> Result<(), <MemoryBackend as FtsBackend>::Error>
Increment collection stats after indexing a document.
doc_len is the number of tokens in the newly indexed document.Source§fn decrement_stats(
&self,
tid: u64,
collection: &str,
doc_len: u32,
) -> Result<(), <MemoryBackend as FtsBackend>::Error>
fn decrement_stats( &self, tid: u64, collection: &str, doc_len: u32, ) -> Result<(), <MemoryBackend as FtsBackend>::Error>
Decrement collection stats after removing a document.
doc_len is the token count of the removed document.Source§fn read_meta(
&self,
tid: u64,
collection: &str,
subkey: &str,
) -> Result<Option<Vec<u8>>, <MemoryBackend as FtsBackend>::Error>
fn read_meta( &self, tid: u64, collection: &str, subkey: &str, ) -> Result<Option<Vec<u8>>, <MemoryBackend as FtsBackend>::Error>
Read a metadata blob by sub-key (e.g., “docmap”, “fieldnorms”,
“analyzer”, “language”).
Source§fn write_meta(
&self,
tid: u64,
collection: &str,
subkey: &str,
value: &[u8],
) -> Result<(), <MemoryBackend as FtsBackend>::Error>
fn write_meta( &self, tid: u64, collection: &str, subkey: &str, value: &[u8], ) -> Result<(), <MemoryBackend as FtsBackend>::Error>
Write a metadata blob by sub-key.
Source§fn write_segment(
&self,
tid: u64,
collection: &str,
segment_id: &str,
data: &[u8],
) -> Result<(), <MemoryBackend as FtsBackend>::Error>
fn write_segment( &self, tid: u64, collection: &str, segment_id: &str, data: &[u8], ) -> Result<(), <MemoryBackend as FtsBackend>::Error>
Write a segment blob.
segment_id is a stable per-collection
identifier (e.g., "L{level}:{id:016x}").Source§fn read_segment(
&self,
tid: u64,
collection: &str,
segment_id: &str,
) -> Result<Option<Vec<u8>>, <MemoryBackend as FtsBackend>::Error>
fn read_segment( &self, tid: u64, collection: &str, segment_id: &str, ) -> Result<Option<Vec<u8>>, <MemoryBackend as FtsBackend>::Error>
Read a segment blob. Returns None if not found.
Source§fn list_segments(
&self,
tid: u64,
collection: &str,
) -> Result<Vec<String>, <MemoryBackend as FtsBackend>::Error>
fn list_segments( &self, tid: u64, collection: &str, ) -> Result<Vec<String>, <MemoryBackend as FtsBackend>::Error>
List all segment ids for a collection.
Source§fn remove_segment(
&self,
tid: u64,
collection: &str,
segment_id: &str,
) -> Result<(), <MemoryBackend as FtsBackend>::Error>
fn remove_segment( &self, tid: u64, collection: &str, segment_id: &str, ) -> Result<(), <MemoryBackend as FtsBackend>::Error>
Remove a segment blob.
Source§fn purge_collection(
&self,
tid: u64,
collection: &str,
) -> Result<usize, <MemoryBackend as FtsBackend>::Error>
fn purge_collection( &self, tid: u64, collection: &str, ) -> Result<usize, <MemoryBackend as FtsBackend>::Error>
Remove all entries for a collection. Returns count of removed entries.
Source§fn purge_tenant(
&self,
tid: u64,
) -> Result<usize, <MemoryBackend as FtsBackend>::Error>
fn purge_tenant( &self, tid: u64, ) -> Result<usize, <MemoryBackend as FtsBackend>::Error>
Remove all entries for a tenant across every collection. Returns
count of removed entries. Implementations MUST use a structural
drop (e.g., tuple range
(tid, ..)..(tid+1, ..)) rather than a
lexical-prefix scan.Auto Trait Implementations§
impl !Freeze for MemoryBackend
impl !RefUnwindSafe for MemoryBackend
impl Send for MemoryBackend
impl !Sync for MemoryBackend
impl Unpin for MemoryBackend
impl UnsafeUnpin for MemoryBackend
impl UnwindSafe for MemoryBackend
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.