From ffeaa97feba2067f227d7ed87411749dc2e6fcf8 Mon Sep 17 00:00:00 2001 From: Alex Wellnitz Date: Sun, 11 Feb 2024 17:22:11 +0100 Subject: [PATCH] feat: add search module and bulk indexing functionality --- src/handler/mod.rs | 3 ++- src/handler/search.rs | 3 +++ src/search/engine.rs | 6 ++++++ tests/search_engine_tests.rs | 13 +++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/handler/search.rs diff --git a/src/handler/mod.rs b/src/handler/mod.rs index 229ec9b..98f7555 100644 --- a/src/handler/mod.rs +++ b/src/handler/mod.rs @@ -1 +1,2 @@ -pub mod hello; \ No newline at end of file +pub mod hello; +pub mod search; \ No newline at end of file diff --git a/src/handler/search.rs b/src/handler/search.rs new file mode 100644 index 0000000..d41703d --- /dev/null +++ b/src/handler/search.rs @@ -0,0 +1,3 @@ +pub fn index_new_document() { + println!("index_new_document"); +} \ No newline at end of file diff --git a/src/search/engine.rs b/src/search/engine.rs index 097e3b3..a7b600f 100644 --- a/src/search/engine.rs +++ b/src/search/engine.rs @@ -79,6 +79,12 @@ impl SearchEngine { } } + pub fn bulk_index(&mut self, documents: Vec<(&str, &str)>) { + for (url, content) in documents { + self.index(url, content); + } + } + pub fn get_urls(&self, keyword: &str) -> HashMap { let keyword = normalize_string(keyword); self.index.get(&keyword).cloned().unwrap_or(HashMap::new()) diff --git a/tests/search_engine_tests.rs b/tests/search_engine_tests.rs index 059f9c7..a61d4cd 100644 --- a/tests/search_engine_tests.rs +++ b/tests/search_engine_tests.rs @@ -13,4 +13,17 @@ mod tests { assert_eq!(search_engine.posts().len(), 1); assert_eq!(search_engine.number_of_documents(), 1); } + + #[test] + fn test_bulk_index() { + let mut search_engine = SearchEngine::new(1.2, 0.75); + + search_engine.bulk_index(vec![ + ("https://www.rust-lang.org/", "Rust Programming Language"), + ("https://www.wikipedia.com/", "Rust Programming Language"), + ]); + + assert_eq!(search_engine.posts().len(), 2); + assert_eq!(search_engine.number_of_documents(), 2); + } } \ No newline at end of file