From 95ccea8d0244e515947c335ace620838f01be60a Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 28 Jul 2026 20:01:28 +0200 Subject: forgor :skull: --- main.go | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 14 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index c2de95e..7e9eaf2 100644 --- a/main.go +++ b/main.go @@ -2,29 +2,66 @@ package main import ( "fmt" + "os" "searchEngine/core" + "searchEngine/core/index" ) func main() { - engine := core.NewEngine() + indexPath := "wikipedia_index.gob" + var engine *core.Engine - dumpPath := "C:/Users/bambi15/Documents/wikipedia/simplewiki-2026-07-01-p1p1273731/simplewiki-2026-07-01-p1p1273731.xml" - fmt.Println("Ingesting and indexing wiki dump...") - err := engine.IndexDump(dumpPath, 4) - if err != nil { - panic(err) + if _, err := os.Stat(indexPath); err == nil { + fmt.Println("Loading pre-built index from disk...") + idx, loadErr := index.Load(indexPath) + if loadErr != nil { + fmt.Printf("Warning: Cache file is corrupted (%v). Re-indexing...\n", loadErr) + os.Remove(indexPath) + engine = core.NewEngine() + dumpPath := "C:/Users/bambi15/Documents/wikipedia/simplewiki-2026-07-01-p1p1273731/simplewiki-2026-07-01-p1p1273731.xml" + + fmt.Println("Ingesting and indexing wiki dump...") + err := engine.IndexDump(dumpPath, 4) + if err != nil { + panic(err) + } + + fmt.Println("\nIndexing complete! Saving index to disk for future runs...") + err = engine.Index().Save(indexPath) + if err != nil { + fmt.Printf("Warning: Failed to save index cache: %v\n", err) + } + } else { + engine = core.NewEngineWithIndex(idx) + fmt.Println("Index loaded successfully!") + + } } - fmt.Println("Indexing complete! Running a test search...") + fmt.Println("Running test searches...") + + searches := []string{ + "albert einstein", + "second world war", + "solar system", + "rome juliet shakespeare", + "cold war united states soviet union", + "quantum mechanics", + "capital city of france", + " ALBERT EINSTEIN ", + } - results := engine.Search("league of legends") + for _, query := range searches { + fmt.Printf("\nsearching %s:\n", query) + results := engine.Search(query) - fmt.Printf("Found %d articles matching your query:\n", len(results)) - for i, title := range results { - if i >= 10 { - fmt.Println("... and more.") - break + fmt.Printf("Found %d articles matching your query:\n", len(results)) + for i, title := range results { + if i >= 10 { + fmt.Println("... and more.") + break + } + fmt.Printf("- %s\n", title) } - fmt.Printf("- %s\n", title) } } -- cgit v1.2.3