pub trait IndexExtension: Send + Sync {
// Required methods
fn index_type(&self) -> &str;
fn insert(
&mut self,
key: &Value,
pointer: TuplePointer,
) -> Result<(), String>;
fn search(&self, key: &Value) -> Result<Vec<TuplePointer>, String>;
fn knn_search(
&self,
query: &Value,
k: usize,
) -> Result<Vec<(TuplePointer, f64)>, String>;
fn serialize(&self) -> Result<Vec<u8>, String>;
fn deserialize(bytes: &[u8]) -> Result<Box<dyn IndexExtension>, String>
where Self: Sized;
}Expand description
Extension trait for custom index types
Required Methods§
Sourcefn index_type(&self) -> &str
fn index_type(&self) -> &str
Index type name (e.g., “hnsw”, “ivfflat”, “gin”)
Sourcefn insert(&mut self, key: &Value, pointer: TuplePointer) -> Result<(), String>
fn insert(&mut self, key: &Value, pointer: TuplePointer) -> Result<(), String>
Insert a key-value pair
Sourcefn search(&self, key: &Value) -> Result<Vec<TuplePointer>, String>
fn search(&self, key: &Value) -> Result<Vec<TuplePointer>, String>
Standard lookup for point queries
Sourcefn knn_search(
&self,
query: &Value,
k: usize,
) -> Result<Vec<(TuplePointer, f64)>, String>
fn knn_search( &self, query: &Value, k: usize, ) -> Result<Vec<(TuplePointer, f64)>, String>
k-NN search for vector similarity (returns k nearest)
Sourcefn deserialize(bytes: &[u8]) -> Result<Box<dyn IndexExtension>, String>where
Self: Sized,
fn deserialize(bytes: &[u8]) -> Result<Box<dyn IndexExtension>, String>where
Self: Sized,
Deserialize index from bytes