about summary refs log tree commit diff stats
path: root/internal/index/search.go
diff options
context:
space:
mode:
authorAlan Pearce2025-03-06 21:53:37 +0100
committerAlan Pearce2025-03-06 21:59:25 +0100
commit24e3fc96ce2c96401155b86c6bfb6a6fb2e322f8 (patch)
tree7cf43762a36d3df8c0375378e44e88e96bf2b79e /internal/index/search.go
parent839cd807ccd1c2c2d4048c5a892af19b08e5270a (diff)
downloadsearchix-24e3fc96ce2c96401155b86c6bfb6a6fb2e322f8.tar.lz
searchix-24e3fc96ce2c96401155b86c6bfb6a6fb2e322f8.tar.zst
searchix-24e3fc96ce2c96401155b86c6bfb6a6fb2e322f8.zip
feat: improve relevance with compound words
Fixes: https://todo.sr.ht/~alanpearce/searchix/8
Fixes: https://todo.sr.ht/~alanpearce/searchix/10
Diffstat (limited to 'internal/index/search.go')
-rw-r--r--internal/index/search.go16
1 files changed, 4 insertions, 12 deletions
diff --git a/internal/index/search.go b/internal/index/search.go
index a62f484..b960c75 100644
--- a/internal/index/search.go
+++ b/internal/index/search.go
@@ -140,16 +140,11 @@ func (index *ReadIndex) Search(
 	query := bleve.NewBooleanQuery()
 
 	// match the user's query in any field ...
-	userQuery := bleve.NewMatchQuery(keyword)
-	userQuery.Analyzer = "option_name"
-
-	userQueryLoc := bleve.NewMatchQuery(keyword)
-	userQueryLoc.Analyzer = "loc"
-	userQueryLoc.SetBoost(2)
-
 	query.AddMust(bleve.NewDisjunctionQuery(
-		userQuery,
-		userQueryLoc,
+		bleve.NewTermQuery(keyword),
+		bleve.NewPrefixQuery(keyword),
+		bleve.NewMatchPhraseQuery(keyword),
+		bleve.NewMatchQuery(keyword),
 	))
 
 	if source != nil {
@@ -166,17 +161,14 @@ func (index *ReadIndex) Search(
 
 	programsQuery := bleve.NewMatchQuery(keyword)
 	programsQuery.SetField("Programs")
-	programsQuery.Analyzer = "keyword_single"
 	query.AddShould(programsQuery)
 
 	attrQuery := bleve.NewMatchQuery(keyword)
 	attrQuery.SetField("Attribute")
-	attrQuery.Analyzer = "keyword_single"
 	query.AddShould(attrQuery)
 
 	nameLiteralQuery := bleve.NewMatchQuery(keyword)
 	nameLiteralQuery.SetField("Name")
-	nameLiteralQuery.Analyzer = "keyword_single"
 	query.AddShould(nameLiteralQuery)
 
 	search := bleve.NewSearchRequest(query)