From ee25606e8a85fb8a95284b6ad678dd18e97dfd02 Mon Sep 17 00:00:00 2001 From: Fridolin Somers Date: Mon, 19 Nov 2018 15:19:46 +0100 Subject: [PATCH] Bug 21865: ES compatiblity of remove_unused_authorities.pl The script misc/migration_tools/remove_unused_authorities.pl directly checks if Zebra search is OK. This patch changes so that this test is only if Zebra is the search engine. It also adds a test on the search off any authority number indexed (index 'an'). With Zebra its : an,alwaysmatches='' With ES its : an:* This test ensure that biblios records are indexed and that not all autorities will be deleted. Test plan: 1) On a catalog create a new authority 2) Use Zebra in systempreference SearchEngine 3) Stop Zebra server 4) Run misc/migration_tools/remove_unused_authorities.pl -c 5) The script does nothing and says : Zebra server seems not to be available. This script needs Zebra runs. 6) Restart Zebra server 7) Delete biblio index base 8) Run misc/migration_tools/remove_unused_authorities.pl -c 9) The script does nothing and says : Searching authority number in biblio records seems not to be available : an,alwaysmatches='' 10) Use ElasticSearch in systempreference SearchEngine 11) Delete biblio index base 12) Run misc/migration_tools/remove_unused_authorities.pl -c 13) The script does nothing and says : Searching authority number in biblio records seems not to be available : an:* Signed-off-by: Bernardo Gonzalez Kriegel Signed-off-by: Jonathan Druart Signed-off-by: Martin Renvoize Signed-off-by: Joy Nelson --- .../remove_unused_authorities.pl | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/misc/migration_tools/remove_unused_authorities.pl b/misc/migration_tools/remove_unused_authorities.pl index 70f2037f6a..30acf5df98 100755 --- a/misc/migration_tools/remove_unused_authorities.pl +++ b/misc/migration_tools/remove_unused_authorities.pl @@ -49,11 +49,25 @@ if (@authtypes) { print "Restricted to authority type(s) : ".join(',', @authtypes).".\n"; } -my $errZebraConnection = C4::Context->Zconn("biblioserver",0)->errcode(); -if ( $errZebraConnection == 10000 ) { - die "Zebra server seems not to be available. This script needs Zebra runs."; -} elsif ( $errZebraConnection ) { - die "Error from Zebra: $errZebraConnection"; +my $searcher = Koha::SearchEngine::Search->new( { index => 'biblios' } ); +my $checksearch; +if ( C4::Context->preference("SearchEngine") eq 'Zebra' ) { + # Check server state + my $errZebraConnection = C4::Context->Zconn("biblioserver",0)->errcode(); + if ( $errZebraConnection == 10000 ) { + die "Zebra server seems not to be available. This script needs Zebra runs."; + } elsif ( $errZebraConnection ) { + die "Error from Zebra: $errZebraConnection"; + } + $checksearch = q{an,alwaysmatches=''}; +} +else { + $checksearch = q{an:*}; +} +# Check search on authority number as at least one result +my ($err,$res,$nb) = $searcher->simple_search_compat($checksearch,0,10); +unless ($nb > 0) { + die "Searching authority number in biblio records seems not to be available : $checksearch"; } my $dbh=C4::Context->dbh; @@ -68,7 +82,6 @@ $rqselect->execute(@authtypes); my $counter=0; my $totdeleted=0; my $totundeleted=0; -my $searcher = Koha::SearchEngine::Search->new({index => 'biblios'}); while (my $data=$rqselect->fetchrow_hashref){ $counter++; print 'authid='.$data->{'authid'}; -- 2.39.5