Bug 33406: Handle ES search errors for authorities

We are dealing ok with ES exceptions for biblio records search,
catching them and raising them to the end user. But we don't for
authorities, where we explode with an ugly 500.

Test plan:
Search for "(term_1*) AND (-) AND (term_2*)" in the authority search and
notice that you don't get a 500 but an error instead saying that you
should try again

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit 09b29d06da)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
(cherry picked from commit b4187cf2ab)
Signed-off-by: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com>
This commit is contained in:
Jonathan Druart 2023-05-11 12:38:53 +02:00 committed by Matt Blenkinsop
parent c31e7b4fe2
commit 8ad444a891
2 changed files with 25 additions and 12 deletions

View file

@ -88,18 +88,6 @@ if ( $op eq "do_search" ) {
my $resultsperpage = $query->param('resultsperpage') || 20;
my $offset = ( $startfrom - 1 ) * $resultsperpage + 1;
my $builder = Koha::SearchEngine::QueryBuilder->new(
{ index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
my $searcher = Koha::SearchEngine::Search->new(
{ index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
my $search_query = $builder->build_authorities_query_compat(
[$marclist], [$and_or], [$excluding], [$operator],
[$value], $authtypecode, $orderby
);
my ( $results, $total ) = $searcher->search_auth_compat(
$search_query, $offset, $resultsperpage
);
( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "authorities/searchresultlist.tt",
@ -109,6 +97,27 @@ if ( $op eq "do_search" ) {
}
);
my $builder = Koha::SearchEngine::QueryBuilder->new(
{ index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
my $searcher = Koha::SearchEngine::Search->new(
{ index => $Koha::SearchEngine::AUTHORITIES_INDEX } );
my $search_query = $builder->build_authorities_query_compat(
[$marclist], [$and_or], [$excluding], [$operator],
[$value], $authtypecode, $orderby
);
my ( $results, $total );
eval {
( $results, $total ) = $searcher->search_auth_compat(
$search_query, $offset, $resultsperpage
);
};
if ($@) {
my $query_error = q{};
$query_error .= $@ if $@;
$template->param(query_error => $query_error);
}
$template->param( search_query => $search_query ) if C4::Context->preference('DumpSearchQueryTemplate');
$template->param(
csrf_token => Koha::Token->new->generate_csrf({

View file

@ -43,6 +43,10 @@
<div id="merge_in_progress" class="page-section bg-info" style="display:none;"></div>
<div class="page-section">
[% IF ( query_error ) %]
<div class="dialog alert"><p><strong>Error:</strong> [% query_error | html %]</p></div>
[% END %]
[% IF ( total ) %]
<div class="pages">[% pagination_bar | $raw %]</div>