pub struct FtsIndex<B>where
B: FtsBackend,{ /* private fields */ }Expand description
Full-text search index generic over storage backend.
Provides identical indexing, search, and highlighting logic for Origin (redb), Lite (in-memory), and WASM deployments.
Writes accumulate in an in-memory Memtable. When the memtable
exceeds its threshold, it is flushed to an immutable segment
stored via the backend. Queries merge the active memtable with
all persisted segments.
Implementations§
Source§impl<B> FtsIndex<B>where
B: FtsBackend,
impl<B> FtsIndex<B>where
B: FtsBackend,
Source§impl<B> FtsIndex<B>where
B: FtsBackend,
impl<B> FtsIndex<B>where
B: FtsBackend,
Sourcepub fn set_collection_analyzer(
&self,
tid: u32,
collection: &str,
analyzer_name: &str,
) -> Result<(), <B as FtsBackend>::Error>
pub fn set_collection_analyzer( &self, tid: u32, collection: &str, analyzer_name: &str, ) -> Result<(), <B as FtsBackend>::Error>
Set the analyzer for a collection. Persists to backend metadata.
Sourcepub fn set_collection_language(
&self,
tid: u32,
collection: &str,
lang_code: &str,
) -> Result<(), <B as FtsBackend>::Error>
pub fn set_collection_language( &self, tid: u32, collection: &str, lang_code: &str, ) -> Result<(), <B as FtsBackend>::Error>
Set the language for a collection. Persists to backend metadata.
Sourcepub fn get_collection_analyzer(
&self,
tid: u32,
collection: &str,
) -> Result<Option<String>, <B as FtsBackend>::Error>
pub fn get_collection_analyzer( &self, tid: u32, collection: &str, ) -> Result<Option<String>, <B as FtsBackend>::Error>
Get the configured analyzer name for a collection.
Sourcepub fn get_collection_language(
&self,
tid: u32,
collection: &str,
) -> Result<Option<String>, <B as FtsBackend>::Error>
pub fn get_collection_language( &self, tid: u32, collection: &str, ) -> Result<Option<String>, <B as FtsBackend>::Error>
Get the configured language for a collection.
Sourcepub fn analyze_for_collection(
&self,
tid: u32,
collection: &str,
text: &str,
) -> Result<Vec<String>, <B as FtsBackend>::Error>
pub fn analyze_for_collection( &self, tid: u32, collection: &str, text: &str, ) -> Result<Vec<String>, <B as FtsBackend>::Error>
Analyze text using the collection’s configured analyzer.
Falls back to the standard English analyzer if no analyzer is configured.
Sourcepub fn tokenize_raw_for_collection(
&self,
tid: u32,
collection: &str,
text: &str,
) -> Result<Vec<String>, <B as FtsBackend>::Error>
pub fn tokenize_raw_for_collection( &self, tid: u32, collection: &str, text: &str, ) -> Result<Vec<String>, <B as FtsBackend>::Error>
Tokenize text WITHOUT stemming for fuzzy matching.
Source§impl<B> FtsIndex<B>where
B: FtsBackend,
impl<B> FtsIndex<B>where
B: FtsBackend,
Sourcepub fn read_fieldnorm(
&self,
tid: u32,
collection: &str,
doc_id: u32,
) -> Result<Option<u32>, <B as FtsBackend>::Error>
pub fn read_fieldnorm( &self, tid: u32, collection: &str, doc_id: u32, ) -> Result<Option<u32>, <B as FtsBackend>::Error>
Get the fieldnorm (SmallFloat-encoded doc length) for a doc.
Returns the decoded approximate u32 length, or None if not stored.
Sourcepub fn write_fieldnorm(
&self,
tid: u32,
collection: &str,
doc_id: u32,
doc_length: u32,
) -> Result<(), <B as FtsBackend>::Error>
pub fn write_fieldnorm( &self, tid: u32, collection: &str, doc_id: u32, doc_length: u32, ) -> Result<(), <B as FtsBackend>::Error>
Write a fieldnorm byte for a doc_id. Grows the array if needed.
Source§impl<B> FtsIndex<B>where
B: FtsBackend,
impl<B> FtsIndex<B>where
B: FtsBackend,
Sourcepub fn index_stats(
&self,
tid: u32,
collection: &str,
) -> Result<(u32, f32), <B as FtsBackend>::Error>
pub fn index_stats( &self, tid: u32, collection: &str, ) -> Result<(u32, f32), <B as FtsBackend>::Error>
Get total document count and average document length for a collection.
Returns (total_docs, avg_doc_len). If the collection is empty,
returns (0, 1.0) to avoid division by zero.
Source§impl<B> FtsIndex<B>where
B: FtsBackend,
impl<B> FtsIndex<B>where
B: FtsBackend,
Sourcepub fn new(backend: B) -> FtsIndex<B>
pub fn new(backend: B) -> FtsIndex<B>
Create a new FTS index with the given backend and default BM25 params.
Sourcepub fn with_params(backend: B, params: Bm25Params) -> FtsIndex<B>
pub fn with_params(backend: B, params: Bm25Params) -> FtsIndex<B>
Create a new FTS index with custom BM25 parameters.
Sourcepub fn backend_mut(&mut self) -> &mut B
pub fn backend_mut(&mut self) -> &mut B
Mutable access to the underlying backend.
Sourcepub fn load_doc_id_map(
&self,
tid: u32,
collection: &str,
) -> Result<DocIdMap, <B as FtsBackend>::Error>
pub fn load_doc_id_map( &self, tid: u32, collection: &str, ) -> Result<DocIdMap, <B as FtsBackend>::Error>
Load the DocIdMap for a collection from backend metadata.
Sourcepub fn index_document(
&self,
tid: u32,
collection: &str,
doc_id: &str,
text: &str,
) -> Result<(), <B as FtsBackend>::Error>
pub fn index_document( &self, tid: u32, collection: &str, doc_id: &str, text: &str, ) -> Result<(), <B as FtsBackend>::Error>
Index a document’s text content.
Sourcepub fn remove_document(
&self,
tid: u32,
collection: &str,
doc_id: &str,
) -> Result<(), <B as FtsBackend>::Error>
pub fn remove_document( &self, tid: u32, collection: &str, doc_id: &str, ) -> Result<(), <B as FtsBackend>::Error>
Remove a document from the index.
Sourcepub fn purge_collection(
&self,
tid: u32,
collection: &str,
) -> Result<usize, <B as FtsBackend>::Error>
pub fn purge_collection( &self, tid: u32, collection: &str, ) -> Result<usize, <B as FtsBackend>::Error>
Purge all entries for a collection. Returns count of removed entries.
Sourcepub fn purge_tenant(&self, tid: u32) -> Result<usize, <B as FtsBackend>::Error>
pub fn purge_tenant(&self, tid: u32) -> Result<usize, <B as FtsBackend>::Error>
Purge all entries for a tenant across every collection.
Source§impl<B> FtsIndex<B>where
B: FtsBackend,
impl<B> FtsIndex<B>where
B: FtsBackend,
Sourcepub fn search(
&self,
tid: u32,
collection: &str,
query: &str,
top_k: usize,
fuzzy_enabled: bool,
) -> Result<Vec<TextSearchResult>, <B as FtsBackend>::Error>
pub fn search( &self, tid: u32, collection: &str, query: &str, top_k: usize, fuzzy_enabled: bool, ) -> Result<Vec<TextSearchResult>, <B as FtsBackend>::Error>
Search the index using BM25 scoring.
Sourcepub fn search_with_mode(
&self,
tid: u32,
collection: &str,
query: &str,
top_k: usize,
fuzzy_enabled: bool,
mode: QueryMode,
) -> Result<Vec<TextSearchResult>, <B as FtsBackend>::Error>
pub fn search_with_mode( &self, tid: u32, collection: &str, query: &str, top_k: usize, fuzzy_enabled: bool, mode: QueryMode, ) -> Result<Vec<TextSearchResult>, <B as FtsBackend>::Error>
Search with explicit boolean mode (AND or OR).
Auto Trait Implementations§
impl<B> !Freeze for FtsIndex<B>
impl<B> !RefUnwindSafe for FtsIndex<B>
impl<B> Send for FtsIndex<B>where
B: Send,
impl<B> !Sync for FtsIndex<B>
impl<B> Unpin for FtsIndex<B>where
B: Unpin,
impl<B> UnsafeUnpin for FtsIndex<B>where
B: UnsafeUnpin,
impl<B> UnwindSafe for FtsIndex<B>where
B: UnwindSafe,
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> 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>
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>
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>
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
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.