agentroot_core/search/
mod.rs1mod bm25;
9mod hybrid;
10mod smart;
11mod snippet;
12mod vector;
13
14pub use hybrid::*;
15pub use smart::smart_search;
16pub use snippet::*;
17
18#[derive(Debug, Clone)]
20pub struct SearchOptions {
21 pub limit: usize,
23 pub min_score: f64,
25 pub collection: Option<String>,
27 pub provider: Option<String>,
29 pub full_content: bool,
31}
32
33impl Default for SearchOptions {
34 fn default() -> Self {
35 Self {
36 limit: 20,
37 min_score: 0.0,
38 collection: None,
39 provider: None,
40 full_content: false,
41 }
42 }
43}
44
45use crate::db::UserMetadata;
46
47#[derive(Debug, Clone)]
49pub struct SearchResult {
50 pub filepath: String,
51 pub display_path: String,
52 pub title: String,
53 pub hash: String,
54 pub collection_name: String,
55 pub modified_at: String,
56 pub body: Option<String>,
57 pub body_length: usize,
58 pub docid: String,
59 pub context: Option<String>,
60 pub score: f64,
61 pub source: SearchSource,
62 pub chunk_pos: Option<usize>,
63 pub llm_summary: Option<String>,
64 pub llm_title: Option<String>,
65 pub llm_keywords: Option<Vec<String>>,
66 pub llm_category: Option<String>,
67 pub llm_difficulty: Option<String>,
68 pub user_metadata: Option<UserMetadata>,
69}
70
71#[derive(Debug, Clone, Copy, PartialEq, Eq)]
73pub enum SearchSource {
74 Bm25,
75 Vector,
76 Hybrid,
77}