#[derive(Debug, Clone)]
pub struct SearchResult {
pub chunk_id: String,
pub text: String,
pub entity_id: String,
pub entity_type: String,
pub title: String,
pub section: String,
pub metadata_json: String,
pub similarity: f64,
pub score: f64,
pub keyword_rank: Option<usize>,
pub semantic_rank: Option<usize>,
}
pub trait SearchIndex: Send + Sync {
fn search(&self, query: &str, limit: usize, entity_type: Option<&str>) -> Vec<SearchResult>;
}