summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go65
1 files changed, 51 insertions, 14 deletions
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)
}
}