Optimize full graph rebuilds with batch indexing to prevent thread exhaustion, and fix adr/snippet search availability before restart
This commit is contained in:
1 parent
84672a00b9
commit
a9885a65d7
3 files changed
+102
-47
No files matched your search
@@ -180,6 +180,67 @@ impl MemoryIndex {
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
|
||||
pub fn index_batch(
|
||||
&self,
|
||||
entities: Vec<Entity>,
|
||||
tasks: Vec<Task>,
|
||||
snippets: Vec<Snippet>,
|
||||
adrs: Vec<Adr>,
|
||||
) -> tokio::task::JoinHandle<tantivy::Result<()>> {
|
||||
let writer = Arc::clone(&self.writer);
|
||||
let id_field = self.id_field;
|
||||
let title_field = self.title_field;
|
||||
let body_field = self.body_field;
|
||||
let type_field = self.type_field;
|
||||
let namespace_field = self.namespace_field;
|
||||
|
||||
tokio::task::spawn_blocking(move || {
|
||||
let writer = writer.lock().unwrap();
|
||||
|
||||
for e in entities {
|
||||
writer.add_document(doc!(
|
||||
id_field => e.name.clone(),
|
||||
title_field => e.name.clone(),
|
||||
body_field => e.observations.join(" "),
|
||||
type_field => "entity",
|
||||
namespace_field => e.namespace.clone()
|
||||
))?;
|
||||
}
|
||||
|
||||
for t in tasks {
|
||||
writer.add_document(doc!(
|
||||
id_field => t.id.clone(),
|
||||
title_field => t.title.clone(),
|
||||
body_field => t.description.clone(),
|
||||
type_field => "task",
|
||||
namespace_field => "global"
|
||||
))?;
|
||||
}
|
||||
|
||||
for s in snippets {
|
||||
writer.add_document(doc!(
|
||||
id_field => s.name.clone(),
|
||||
title_field => s.name.clone(),
|
||||
body_field => format!("{} {}", s.language, s.description),
|
||||
type_field => "snippet",
|
||||
namespace_field => "global"
|
||||
))?;
|
||||
}
|
||||
|
||||
for a in adrs {
|
||||
writer.add_document(doc!(
|
||||
id_field => a.id.clone(),
|
||||
title_field => a.title.clone(),
|
||||
body_field => format!("{} {} {}", a.context, a.decision, a.consequence),
|
||||
type_field => "adr",
|
||||
namespace_field => "global"
|
||||
))?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
Reference in new issue
Block a user