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>
This commit is contained in:
Jonathan Druart 2023-05-11 12:38:53 +02:00 committed by Tomas Cohen Arazi
parent fbd62562e0
commit 09b29d06da
No known key found for this signature in database
GPG Key ID: 0A272EA1B2F3C15F
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

@ -48,6 +48,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>