X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=misc%2Fmigration_tools%2Frebuild_nozebra.pl;h=b6b82c5c8cf959fd29274b87f5c77d05914203e0;hb=c13d3f0043324ca9625128b25c9edba7b41ebd7f;hp=114d87fe2677a05b5d7bbd384f541f8cda4d0def;hpb=0e2b06521971e095e50db8bc7ae58ccd828b4d86;p=koha_fer diff --git a/misc/migration_tools/rebuild_nozebra.pl b/misc/migration_tools/rebuild_nozebra.pl index 114d87fe26..b6b82c5c8c 100755 --- a/misc/migration_tools/rebuild_nozebra.pl +++ b/misc/migration_tools/rebuild_nozebra.pl @@ -6,6 +6,7 @@ use C4::Biblio; use C4::AuthoritiesMarc; use strict; +#use warnings; FIXME - Bug 2505 # # script that fills the nozebra table # @@ -16,22 +17,59 @@ $|=1; # flushes output # limit for database dumping my $limit;# = "LIMIT 100"; my $directory; -my $skip_export; -my $keep_export; -my $reset; -my $biblios; +#my $skip_export; +#my $keep_export; +#my $reset; +#my $biblios; my $authorities; my $sysprefs; -GetOptions( +my $commit; +my $want_help; + +my $result = GetOptions( 'd:s' => \$directory, - 'reset' => \$reset, - 's' => \$skip_export, - 'k' => \$keep_export, - 'b' => \$biblios, - 'a' => \$authorities, +# 'reset' => \$reset, +# 's' => \$skip_export, # Not used and conflicts with 's' option some lines below for sysprefs!!! +# 'k' => \$keep_export, +# 'b' => \$biblios, +# 'a' => \$authorities, 's' => \$sysprefs, # rebuild 'NoZebraIndexes' syspref + 'h|help' => \$want_help, + 'commit:f' => \$commit, ); +if (not $result or $want_help) { + print_usage(); + exit 0; +} + + +sub print_usage { + print <<_USAGE_; +$0: reindex MARC bibs and authorities if NOT using Zebra ("NoZebra"). + +Use this batch job to reindex all biblio and authority +records in your Koha database. This job is useful +only if you are NOT using Zebra ('NoZebra'); if you are +using the 'Zebra'mode, this job should NOT be used. + +Parameters: + -d Temporary directory for indexing. + If not specified, one is automatically + created. The export directory + is automatically deleted unless + you supply the -k switch. + + -s Rebuild "NoZebraIndexes" System Preference + + --help or -h show this message. +_USAGE_ +} # END of print_usage sub + + +my $commitnum = 1000; +$commitnum = $commit if ($commit) ; + $directory = "export" unless $directory; my $dbh=C4::Context->dbh; $dbh->do("update systempreferences set value=1 where variable='NoZebra'"); @@ -75,7 +113,9 @@ if (!%index || $sysprefs ) { 'callnum' => '952o', 'an' => '6009,6109,6119', 'series' => 440*,490*, -'host-item' => '952a,952c', +'host-item' => '9529 +'shelf' => '952c', +'collection' => '9528', \"WHERE variable='NoZebraIndexes'"); %index = GetNoZebraIndexes(); @@ -83,9 +123,12 @@ if (!%index || $sysprefs ) { } $|=1; +$dbh->{AutoCommit} = 0; + print "***********************************\n"; print "***** building BIBLIO indexes *****\n"; print "***********************************\n"; + my $sth; $sth=$dbh->prepare("select biblionumber from biblioitems order by biblionumber $limit"); $sth->execute(); @@ -104,7 +147,7 @@ while (my ($biblionumber) = $sth->fetchrow) { } next unless $record; # get title of the record (to store the 10 first letters with the index) - my ($titletag,$titlesubfield) = GetMarcFromKohaField('biblio.title'); + my ($titletag,$titlesubfield) = GetMarcFromKohaField('biblio.title', ''); my $title = lc($record->subfield($titletag,$titlesubfield)); # remove blancks comma (that could cause problem when decoding the string for CQL retrieval) and regexp specific values @@ -122,7 +165,7 @@ while (my ($biblionumber) = $sth->fetchrow) { # check each index to see if the subfield is stored somewhere # otherwise, store it in __RAW__ index foreach my $key (keys %index) { - if ($index{$key} =~ /$tag\*/ or $index{$key} =~ /$tag$subfieldcode/) { + if ($index{$key} =~ /\Q$tag\E\*/ or $index{$key} =~ /\Q$tag$subfieldcode\E/) { $indexed=1; my $line= lc $subfield->[1]; # remove meaningless value in the field... @@ -163,6 +206,8 @@ while (my ($biblionumber) = $sth->fetchrow) { } } } + + print "\nInserting records...\n"; $i=0; @@ -180,7 +225,11 @@ foreach my $key (keys %result) { $sth->execute($key,$index,$result{$key}->{$index}); $dbh->commit() if (0 == $i % $commitnum); } + $dbh->commit() if (0 == $i % $commitnum); } +$dbh->commit; + + print "\nbiblios done\n"; print "\n***********************************\n"; @@ -269,6 +318,9 @@ while (my ($authid) = $sth->fetchrow) { } } } + + + print "\nInserting...\n"; $i=0; @@ -285,5 +337,7 @@ foreach my $key (keys %result) { $sth->execute($key,$index,$result{$key}->{$index}); $dbh->commit() if (0 == $i % $commitnum); } + $dbh->commit() if (0 == $i % $commitnum); } +$dbh->commit; print "\nauthorities done\n";