From 1c72c4f6fa7ceb8bdc368d6020ac004502afe68f Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Mon, 1 Jun 2020 15:21:56 +0400 Subject: [PATCH] Bug 24555: Fix search limits --- Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm index 1efadf02c1..464aaef669 100644 --- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm +++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm @@ -153,14 +153,13 @@ sub build_query_compat { my $query; my $query_str = ''; my $search_param_query_str = ''; - my $limits = (); + my $limits = $self->_fix_limit_special_cases($orig_limits); if ( $scan ) { ($query, $query_str) = $self->_build_scan_query( $operands, $indexes ); $search_param_query_str = $query_str; } else { my @sort_params = $self->_convert_sort_fields(@$sort_by); my @index_params = $self->_convert_index_fields(@$indexes); - my $limits = $self->_fix_limit_special_cases($orig_limits); if ( $params->{suppress} ) { push @$limits, "suppress:false"; } # Merge the indexes in with the search terms and the operands so that # each search thing is a handy unit. @@ -796,7 +795,8 @@ Transform limit strings to Elasticsearch filters sub _build_limit_filters { my ( $self, $limits ) = @_; - my @res; + + my %facets; foreach my $s (@$limits) { next if $s eq ''; my ( $field, $term ) = $s =~ /^\s*([\w,-]*?):(.*)/; @@ -805,13 +805,14 @@ sub _build_limit_filters { my ($conv) = $self->_convert_index_fields($field); my $facet_name = $conv->{field} . '__facet'; $facet_name =~ s/^mc-//; - push @res, { - term => { - $facet_name => $term - } - }; + $facets{$facet_name} //= []; + push @{ $facets{$facet_name} }, $term; } + my @res = map { + { terms => { $_ => $facets{$_} } } + } sort keys %facets; + return \@res; } -- 2.20.1