mod bm25;
mod hybrid;
mod smart;
mod snippet;
mod vector;
pub use hybrid::*;
pub use smart::smart_search;
pub use snippet::*;
#[derive(Debug, Clone)]
pub struct SearchOptions {
pub limit: usize,
pub min_score: f64,
pub collection: Option<String>,
pub provider: Option<String>,
pub full_content: bool,
}
impl Default for SearchOptions {
fn default() -> Self {
Self {
limit: 20,
min_score: 0.0,
collection: None,
provider: None,
full_content: false,
}
}
}
use crate::db::UserMetadata;
#[derive(Debug, Clone)]
pub struct SearchResult {
pub filepath: String,
pub display_path: String,
pub title: String,
pub hash: String,
pub collection_name: String,
pub modified_at: String,
pub body: Option<String>,
pub body_length: usize,
pub docid: String,
pub context: Option<String>,
pub score: f64,
pub source: SearchSource,
pub chunk_pos: Option<usize>,
pub llm_summary: Option<String>,
pub llm_title: Option<String>,
pub llm_keywords: Option<Vec<String>>,
pub llm_category: Option<String>,
pub llm_difficulty: Option<String>,
pub user_metadata: Option<UserMetadata>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SearchSource {
Bm25,
Vector,
Hybrid,
}