summaryrefslogtreecommitdiff
path: root/core/ingest
diff options
context:
space:
mode:
authoralex <[email protected]>2026-07-28 17:37:06 +0200
committeralex <[email protected]>2026-07-28 17:37:06 +0200
commitc91c3afd8700138f8eb8a25a4ae422c2c9e46cea (patch)
treefd9b5ea4f3b821581b2ceb4e7fa8afc1a84c0eeb /core/ingest
parent5858d34b8ab573e18a4f6ddc5ee962b24ea269dc (diff)
downloadsearch-engine-c91c3afd8700138f8eb8a25a4ae422c2c9e46cea.tar.xz
search-engine-c91c3afd8700138f8eb8a25a4ae422c2c9e46cea.zip
refactored entire code base to be in the package core so i can later implement interfaces to interact with the engine
Diffstat (limited to 'core/ingest')
-rw-r--r--core/ingest/ingest.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/core/ingest/ingest.go b/core/ingest/ingest.go
new file mode 100644
index 0000000..d54ff9d
--- /dev/null
+++ b/core/ingest/ingest.go
@@ -0,0 +1,44 @@
+package ingest
+
+import (
+ "encoding/xml"
+ "io"
+ "os"
+)
+
+type Page struct {
+ Title string `xml:"title"`
+ Text string `xml:"revision>text"`
+ Id int `xml:"id"`
+}
+
+func IngestWikiDump(filePath string, jobQueue chan<- Page) error {
+ file, err := os.Open(filePath)
+ if err != nil {
+ return err
+ }
+ defer file.Close()
+
+ decoder := xml.NewDecoder(file)
+
+ for {
+ t, err := decoder.Token()
+ if err == io.EOF {
+ break
+ }
+ if err != nil {
+ return err
+ }
+
+ switch se := t.(type) {
+ case xml.StartElement:
+ if se.Name.Local == "page" {
+ var p Page
+ if err := decoder.DecodeElement(&p, &se); err == nil {
+ jobQueue <- p
+ }
+ }
+ }
+ }
+ return nil
+}