diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 65 |
1 files changed, 51 insertions, 14 deletions
@@ -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) } } |
