about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAlan Pearce2024-05-17 14:05:31 +0200
committerAlan Pearce2024-05-17 14:05:31 +0200
commit42611df8133fc88bac5947a65a18fa095d68a951 (patch)
tree5c582bbec78b6838891fcec216f4dcd92bf45f99
parent29f2099e68a3226060308c66e5b1aa19fb2ba8e0 (diff)
downloadsearchix-42611df8133fc88bac5947a65a18fa095d68a951.tar.lz
searchix-42611df8133fc88bac5947a65a18fa095d68a951.tar.zst
searchix-42611df8133fc88bac5947a65a18fa095d68a951.zip
feat(index): enable storage of package data
-rw-r--r--internal/index/indexer.go12
-rw-r--r--internal/nix/importable.go7
2 files changed, 18 insertions, 1 deletions
diff --git a/internal/index/indexer.go b/internal/index/indexer.go
index da2fab3..a661b61 100644
--- a/internal/index/indexer.go
+++ b/internal/index/indexer.go
@@ -101,7 +101,17 @@ func createIndexMapping() (mapping.IndexMapping, error) {
 	optionMapping.AddSubDocumentMapping("Default", nixValueMapping)
 	optionMapping.AddSubDocumentMapping("Example", nixValueMapping)
 
+	packageMapping := bleve.NewDocumentStaticMapping()
+
+	packageMapping.AddFieldMappingsAt("Name", keywordFieldMapping)
+	packageMapping.AddFieldMappingsAt("Source", keywordFieldMapping)
+	packageMapping.AddFieldMappingsAt("Description", textFieldMapping)
+	packageMapping.AddFieldMappingsAt("MainProgram", keywordFieldMapping)
+	packageMapping.AddFieldMappingsAt("PackageSet", keywordFieldMapping)
+	packageMapping.AddFieldMappingsAt("Platforms", keywordFieldMapping)
+
 	indexMapping.AddDocumentMapping("option", optionMapping)
+	indexMapping.AddDocumentMapping("package", packageMapping)
 
 	return indexMapping, nil
 }
@@ -259,7 +269,7 @@ func (i *WriteIndex) Import(
 
 			var data bytes.Buffer
 			enc := gob.NewEncoder(&data)
-			err = enc.Encode(obj)
+			err = enc.Encode(&obj)
 			if err != nil {
 				errs <- errors.WithMessage(err, "could not store object in search index")
 
diff --git a/internal/nix/importable.go b/internal/nix/importable.go
index 309ec5f..37532cd 100644
--- a/internal/nix/importable.go
+++ b/internal/nix/importable.go
@@ -1,5 +1,7 @@
 package nix
 
+import "encoding/gob"
+
 type Importable interface {
 	BleveType() string
 	GetName() string
@@ -9,3 +11,8 @@ type Importable interface {
 func GetKey(i Importable) string {
 	return i.BleveType() + "/" + i.GetSource() + "/" + i.GetName()
 }
+
+func init() {
+	gob.Register(Option{})
+	gob.Register(Package{})
+}