all repos — searchix @ 465a9a8d03878f9b8f22424d679080fb53317d6d

Search engine for NixOS, nix-darwin, home-manager and NUR users

feat: enable advanced query string syntax Example: +Source:/home-manager|nixpkgs/ +"systemd service" https://blevesearch.com/docs/Query-String-Query/ References: https://codeberg.org/alanpearce/searchix/issues/6

Alan Pearce
commit

465a9a8d03878f9b8f22424d679080fb53317d6d

parent

516f3e9dcd9b987e6ddda7741f088901b319fe38

1 file changed, 12 insertions(+), 7 deletions(-)

changed files
M internal/index/search.gointernal/index/search.go
@@ -5,6 +5,7 @@ "bytes"
"context" "encoding/gob" "iter" + "strings" "time" "alin.ovh/searchix/internal/config"
@@ -126,13 +127,17 @@ pageSize int,
) (*Result, errors.E) { query := bleve.NewBooleanQuery() - // match the user's query in any field ... - query.AddMust(bleve.NewDisjunctionQuery( - setBoost(bleve.NewTermQuery(keyword), 50), - setBoost(bleve.NewPrefixQuery(keyword), 25), - setBoost(bleve.NewMatchPhraseQuery(keyword), 25), - bleve.NewMatchQuery(keyword), - )) + if strings.ContainsAny(keyword, "+-=&|<>!(){}[]^\"~*?:\\/") { + query.AddMust(bleve.NewQueryStringQuery(keyword)) + } else { + // match the user's query in any field ... + query.AddMust(bleve.NewDisjunctionQuery( + setBoost(bleve.NewTermQuery(keyword), 50), + setBoost(bleve.NewPrefixQuery(keyword), 25), + setBoost(bleve.NewMatchPhraseQuery(keyword), 25), + bleve.NewMatchQuery(keyword), + )) + } if source != nil { query.AddMust(