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

3 files changed, 30 insertions(+), 8 deletions(-)

changed files
M frontend/static/style.cssfrontend/static/style.css
@@ -67,6 +67,17 @@ padding: unset;
margin: unset; } +legend { + display: flex; + width: 100%; + justify-content: space-between; + align-items: baseline; +} + +.help { + align-self: right; +} + section { border: none; margin: unset;
@@ -126,7 +137,7 @@ h2 {
font-size: 1.5rem; } -h2:only-child { +h2 { margin-top: 0; }
M internal/components/search.gointernal/components/search.go
@@ -16,6 +16,12 @@ FieldSet(
Legend( ID("legend"), H2(g.Textf("%s search", sourceNameAndType(tdata.Source))), + A( + Class("help"), + Target("_blank"), + Href("https://blevesearch.com/docs/Query-String-Query/"), + g.Text("advanced query syntax"), + ), ), Input( ID("query"),
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(