diff --git a/services/search/pkg/query/bleve/compiler.go b/services/search/pkg/query/bleve/compiler.go index 310397cae6..d1cdef2ef5 100644 --- a/services/search/pkg/query/bleve/compiler.go +++ b/services/search/pkg/query/bleve/compiler.go @@ -102,7 +102,10 @@ func walk(offset int, nodes []ast.Node) (bleveQuery.Query, int, error) { v = bleveEscaper.Replace(n.Value) } - if _, ok := lowercaseFields[k]; ok { + if k == "" { + // Freetext: lowercase for _all field matching + v = strings.ToLower(v) + } else if _, ok := lowercaseFields[k]; ok { v = strings.ToLower(v) } @@ -115,7 +118,20 @@ func walk(offset int, nodes []ast.Node) (bleveQuery.Query, int, error) { isGroup = group } default: - q = bleveQuery.NewQueryStringQuery(k + ":" + v) + if k == "" { + q = bleveQuery.NewQueryStringQuery(v) + } else if k == "Name" { + // Also search Metadata fields when searching by name + nameQ := bleveQuery.NewQueryStringQuery(k + ":" + v) + metaQ := bleveQuery.NewQueryStringQuery(strings.ToLower(strings.Trim(v, `*\"`))) + q = bleveQuery.NewDisjunctionQuery([]bleveQuery.Query{nameQ, metaQ}) + group = true + if prev == nil { + isGroup = true + } + } else { + q = bleveQuery.NewQueryStringQuery(k + ":" + v) + } } if prev == nil { @@ -279,7 +295,7 @@ func mapBinary(operator *ast.OperatorNode, ln, rn bleveQuery.Query, leftIsGroup func getField(name string) string { if name == "" { - return "Name" + return "" } if _, ok := _fields[strings.ToLower(name)]; ok { return _fields[strings.ToLower(name)] diff --git a/services/search/pkg/query/bleve/compiler_test.go b/services/search/pkg/query/bleve/compiler_test.go index ff94e88726..c0c334cae7 100644 --- a/services/search/pkg/query/bleve/compiler_test.go +++ b/services/search/pkg/query/bleve/compiler_test.go @@ -33,7 +33,7 @@ func Test_compile(t *testing.T) { }, }, want: query.NewConjunctionQuery([]query.Query{ - query.NewQueryStringQuery(`Name:federated`), + query.NewQueryStringQuery(`federated`), }), wantErr: false, }, @@ -45,7 +45,7 @@ func Test_compile(t *testing.T) { }, }, want: query.NewConjunctionQuery([]query.Query{ - query.NewQueryStringQuery(`Name:john\ smith`), + query.NewQueryStringQuery(`john\ smith`), }), wantErr: false, },