@@ -, +, @@ kw:foo becomes :foo Error: Unable to perform your search. Please try again. Failed to parse query [(:foo*)] "12 result(s) found for 'kw:foo'." --- Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 1 + t/Koha/SearchEngine/Elasticsearch/QueryBuilder.t | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) --- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm +++ a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm @@ -947,6 +947,7 @@ sub _clean_search_term { # Remove unquoted colons that have whitespace on either side of them $term =~ s/(:+)(\s+)$lookahead/$2/g; $term =~ s/(\s+)(:+)$lookahead/$1/g; + $term =~ s/^://; $term = $self->_query_regex_escape_process($term); --- a/t/Koha/SearchEngine/Elasticsearch/QueryBuilder.t +++ a/t/Koha/SearchEngine/Elasticsearch/QueryBuilder.t @@ -187,7 +187,7 @@ subtest '_split_query() tests' => sub { }; subtest '_clean_search_term() tests' => sub { - plan tests => 11; + plan tests => 12; my $qb; ok( @@ -224,6 +224,9 @@ subtest '_clean_search_term() tests' => sub { $res = $qb->_clean_search_term('ti:test AND kw:test'); is($res, 'title:test AND test', 'ti converted to title, kw converted to empty string, dangling colon removed with space preserved'); + + $res = $qb->_clean_search_term('kw:test'); + is($res, 'test', 'kw converted to empty string, dangling colon removed with space preserved'); }; subtest '_join_queries' => sub { --