diff options
author | Alan Pearce | 2025-03-20 19:55:17 +0100 |
---|---|---|
committer | Alan Pearce | 2025-03-20 19:55:17 +0100 |
commit | 49a07fb0b513dcaeb6241f4d87c160b9e0119260 (patch) | |
tree | 6ab17672c8227b8634c25003e7735cee60d247c6 /internal | |
parent | 7247322a386f065c643dc58f0ae5b57ad7ec1cc1 (diff) | |
download | searchix-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.go | 23 |
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 |