diff --git a/pkg/search/query.go b/pkg/search/query.go index 192750f35..fab6305f6 100644 --- a/pkg/search/query.go +++ b/pkg/search/query.go @@ -147,7 +147,12 @@ func formatQualifiers(qs Qualifiers) []string { func formatKeywords(ks []string) []string { for i, k := range ks { - ks[i] = quote(k) + before, after, found := strings.Cut(k, ":") + if !found { + ks[i] = quote(k) + } else { + ks[i] = fmt.Sprintf("%s:%s", before, quote(after)) + } } return ks } diff --git a/pkg/search/query_test.go b/pkg/search/query_test.go index c2b2d8605..dacc033f7 100644 --- a/pkg/search/query_test.go +++ b/pkg/search/query_test.go @@ -47,7 +47,14 @@ func TestQueryString(t *testing.T) { query: Query{ Keywords: []string{"quote keywords"}, }, - out: "\"quote keywords\"", + out: `"quote keywords"`, + }, + { + name: "quotes keywords that are qualifiers", + query: Query{ + Keywords: []string{"quote:keywords", "quote:multiword keywords"}, + }, + out: `quote:keywords quote:"multiword keywords"`, }, { name: "quotes qualifiers", @@ -56,7 +63,7 @@ func TestQueryString(t *testing.T) { Topic: []string{"quote qualifier"}, }, }, - out: "topic:\"quote qualifier\"", + out: `topic:"quote qualifier"`, }, } for _, tt := range tests {