From 99a75f278c5d51acbc86661b72c8b9e66147b98a Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 26 Jun 2020 13:19:47 +0000 Subject: [PATCH] Bug 25882: Remove phr indicator from limits when processing We assume all limits from advanced search to be a phrase and quote them when doing this we should remove the phrase marker to avoid doulbe quoting To test: 1 - Have koha using ES 2 - Go to advanced search 3 - Limit by a single itemtype that exists 4 - Get some results 5 - Limit by a different itemtype that exists 6 - Get some results 7 - Limit by both itemtypes 8 - Get only the results for the second itemtype 9 - Enable DumpTemplateVarsIntranet and DumpSearchQueryTemplate 10 - Repeat search 11 - View page source and find 'search_query' 12 - See limit looks like itype:("("BK")" OR "("CR")") 13 - Apply patches 14 - Restart all the things 15 - Repeat search for both itemtypes 16 - Note results now include both types Signed-off-by: Alex Arnaud Signed-off-by: Tomas Cohen Arazi --- Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm index 4d69dcf95b..8f3aea9445 100644 --- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm +++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm @@ -1014,6 +1014,7 @@ sub _fix_limit_special_cases { } else { my ( $field, $term ) = $l =~ /^\s*([\w,-]*?):(.*)/; + $field =~ s/,phr$//; #We are quoting all the limits as phrase, this prevents from quoting again later if ( defined($field) && defined($term) ) { push @new_lim, "$field:(\"$term\")"; } -- 2.28.0