pub struct ContextIndex { /* private fields */ }Expand description
Dedicated cross-structure inverted index for context search.
Uses a reverse index (entity_id → keys) so that removal is O(k) where k
is the number of tokens for that entity, instead of O(total_tokens).
Implementations§
Source§impl ContextIndex
impl ContextIndex
Sourcepub fn set_collection_enabled(&self, collection: &str, enabled: bool)
pub fn set_collection_enabled(&self, collection: &str, enabled: bool)
Opt a collection in or out of context indexing. Driven by
CREATE TABLE ... WITH context_index = true at DDL time.
Sourcepub fn is_collection_enabled(&self, collection: &str) -> bool
pub fn is_collection_enabled(&self, collection: &str) -> bool
Whether writes to this collection should land in the index.
Sourcepub fn index_entity(&self, collection: &str, entity: &UnifiedEntity)
pub fn index_entity(&self, collection: &str, entity: &UnifiedEntity)
Index an entity — extracts tokens and field:value pairs into posting lists.
Sourcepub fn index_entities<'a, I>(&self, collection: &str, entities: I)where
I: IntoIterator<Item = &'a UnifiedEntity>,
pub fn index_entities<'a, I>(&self, collection: &str, entities: I)where
I: IntoIterator<Item = &'a UnifiedEntity>,
Batch variant of index_entity that amortizes lock traffic across
multiple rewrites.
Sourcepub fn remove_entity(&self, entity_id: EntityId)
pub fn remove_entity(&self, entity_id: EntityId)
Remove all postings for an entity. O(k) where k = entity’s token count.
Sourcepub fn search(
&self,
query: &str,
limit: usize,
allowed_collections: Option<&BTreeSet<String>>,
) -> Vec<ContextSearchHit>
pub fn search( &self, query: &str, limit: usize, allowed_collections: Option<&BTreeSet<String>>, ) -> Vec<ContextSearchHit>
Search by tokens — tokenizes the query, looks up posting lists, and scores by overlap.
Sourcepub fn search_bm25(
&self,
query: &str,
limit: usize,
allowed_collections: Option<&BTreeSet<String>>,
) -> Vec<ContextSearchHit>
pub fn search_bm25( &self, query: &str, limit: usize, allowed_collections: Option<&BTreeSet<String>>, ) -> Vec<ContextSearchHit>
Search by tokens using BM25-style sparse ranking.
The index stores one posting per unique entity token, so term frequency is binary. IDF and document-length normalization still give ASK/text retrieval a real sparse ranker instead of the legacy overlap fraction.
Sourcepub fn search_field(
&self,
field: &str,
value: &str,
exact: bool,
limit: usize,
allowed_collections: Option<&BTreeSet<String>>,
) -> Vec<ContextSearchHit>
pub fn search_field( &self, field: &str, value: &str, exact: bool, limit: usize, allowed_collections: Option<&BTreeSet<String>>, ) -> Vec<ContextSearchHit>
Search by field:value — direct lookup in the field-value index.
Sourcepub fn stats(&self) -> ContextIndexStats
pub fn stats(&self) -> ContextIndexStats
Return index statistics.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for ContextIndex
impl !RefUnwindSafe for ContextIndex
impl Send for ContextIndex
impl Sync for ContextIndex
impl Unpin for ContextIndex
impl UnsafeUnpin for ContextIndex
impl UnwindSafe for ContextIndex
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> 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 more