diff --git a/server/src/search.rs b/server/src/search.rs index c8cecc3..84f8062 100644 --- a/server/src/search.rs +++ b/server/src/search.rs @@ -54,21 +54,16 @@ impl MemoryIndex { pub fn index_entity(&self, e: &Entity) -> tokio::task::JoinHandle> { let writer = Arc::clone(&self.writer); - let e = e.clone(); - 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; + + let doc = doc!( + self.id_field => e.name.as_str(), + self.title_field => e.name.as_str(), + self.body_field => e.observations.join(" "), + self.type_field => "entity", + self.namespace_field => e.namespace.as_str() + ); tokio::task::spawn_blocking(move || { - let doc = doc!( - id_field => e.name.clone(), - title_field => e.name.clone(), - body_field => e.observations.join(" "), - type_field => "entity", - namespace_field => e.namespace.clone() - ); let writer = writer.lock().unwrap_or_else(|e| e.into_inner()); writer.add_document(doc)?; Ok(()) @@ -77,21 +72,16 @@ impl MemoryIndex { pub fn index_task(&self, t: &Task) -> tokio::task::JoinHandle> { let writer = Arc::clone(&self.writer); - let t = t.clone(); - 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; + + let doc = doc!( + self.id_field => t.id.as_str(), + self.title_field => t.title.as_str(), + self.body_field => t.description.as_str(), + self.type_field => "task", + self.namespace_field => "global" + ); tokio::task::spawn_blocking(move || { - let doc = doc!( - id_field => t.id.clone(), - title_field => t.title.clone(), - body_field => t.description.clone(), - type_field => "task", - namespace_field => "global" - ); let writer = writer.lock().unwrap_or_else(|e| e.into_inner()); writer.add_document(doc)?; Ok(()) @@ -169,21 +159,16 @@ impl MemoryIndex { pub fn index_snippet(&self, s: &Snippet) -> tokio::task::JoinHandle> { let writer = Arc::clone(&self.writer); - let s = s.clone(); - 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; + + let doc = doc!( + self.id_field => s.name.as_str(), + self.title_field => s.name.as_str(), + self.body_field => format!("{} {}", s.language, s.description), + self.type_field => "snippet", + self.namespace_field => "global" + ); tokio::task::spawn_blocking(move || { - let doc = doc!( - id_field => s.name.clone(), - title_field => s.name.clone(), - body_field => format!("{} {}", s.language, s.description), - type_field => "snippet", - namespace_field => "global" - ); let writer = writer.lock().unwrap_or_else(|e| e.into_inner()); writer.add_document(doc)?; Ok(()) @@ -192,21 +177,16 @@ impl MemoryIndex { pub fn index_adr(&self, a: &Adr) -> tokio::task::JoinHandle> { let writer = Arc::clone(&self.writer); - let a = a.clone(); - 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; + + let doc = doc!( + self.id_field => a.id.as_str(), + self.title_field => a.title.as_str(), + self.body_field => format!("{} {} {}", a.context, a.decision, a.consequence), + self.type_field => "adr", + self.namespace_field => "global" + ); tokio::task::spawn_blocking(move || { - let doc = 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" - ); let writer = writer.lock().unwrap_or_else(|e| e.into_inner()); writer.add_document(doc)?; Ok(())