about summary refs log tree commit diff stats
path: root/internal
diff options
context:
space:
mode:
authorAlan Pearce2025-03-20 19:55:17 +0100
committerAlan Pearce2025-03-20 19:55:17 +0100
commit49a07fb0b513dcaeb6241f4d87c160b9e0119260 (patch)
tree6ab17672c8227b8634c25003e7735cee60d247c6 /internal
parent7247322a386f065c643dc58f0ae5b57ad7ec1cc1 (diff)
downloadsearchix-49a07fb0b513dcaeb6241f4d87c160b9e0119260.tar.lz
searchix-49a07fb0b513dcaeb6241f4d87c160b9e0119260.tar.zst
searchix-49a07fb0b513dcaeb6241f4d87c160b9e0119260.zip
feat: promote results with literal or prefix name matches
Diffstat (limited to 'internal')
-rw-r--r--internal/index/search.go23
1 files changed, 19 insertions, 4 deletions
diff --git a/internal/index/search.go b/internal/index/search.go
index d5bf177..79421a3 100644
--- a/internal/index/search.go
+++ b/internal/index/search.go
@@ -137,15 +137,30 @@ func (index *ReadIndex) Search(
 	programsQuery.SetBoost(2)
 	query.AddShould(programsQuery)
 
+	programsLiteralQuery := bleve.NewTermQuery(keyword)
+	programsLiteralQuery.SetField("Programs")
+	programsLiteralQuery.SetBoost(50)
+	query.AddShould(programsLiteralQuery)
+
 	attrQuery := bleve.NewMatchQuery(keyword)
 	attrQuery.SetField("Attribute")
 	attrQuery.SetBoost(2)
 	query.AddShould(attrQuery)
 
-	nameLiteralQuery := bleve.NewMatchQuery(keyword)
-	nameLiteralQuery.SetField("Name")
-	nameLiteralQuery.SetBoost(2)
-	query.AddShould(nameLiteralQuery)
+	attrPrefixQuery := bleve.NewPrefixQuery(keyword)
+	attrPrefixQuery.SetField("Attribute")
+	attrPrefixQuery.SetBoost(10)
+	query.AddShould(attrPrefixQuery)
+
+	nameQuery := bleve.NewMatchQuery(keyword)
+	nameQuery.SetField("Name")
+	nameQuery.SetBoost(2)
+	query.AddShould(nameQuery)
+
+	namePrefixQuery := bleve.NewPrefixQuery(keyword)
+	namePrefixQuery.SetField("Name")
+	namePrefixQuery.SetBoost(10)
+	query.AddShould(namePrefixQuery)
 
 	search := bleve.NewSearchRequest(query)
 	search.Explain = config.DevMode