Bug 21865: ES compatiblity of remove_unused_authorities.pl
authorFridolin Somers <fridolin.somers@biblibre.com>
Mon, 19 Nov 2018 14:19:46 +0000 (15:19 +0100)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 14 Apr 2020 15:54:10 +0000 (16:54 +0100)
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 <bgkriegel@gmail.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

misc/migration_tools/remove_unused_authorities.pl

index 70f2037..30acf5d 100755 (executable)
@@ -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'};