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
1 file changed, 12 insertions(+), 7 deletions(-)
changed files
M internal/index/search.go → internal/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(