add option to export and index xml to rebuild_zebra

Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
This commit is contained in:
Ryan Higgins 2008-02-13 13:03:20 -06:00 committed by Joshua Ferraro
parent c90af5d48b
commit 71dd69d5ac

View file

@ -28,6 +28,7 @@ my $noxml;
my $noshadow; my $noshadow;
my $do_munge; my $do_munge;
my $want_help; my $want_help;
my $as_xml;
my $result = GetOptions( my $result = GetOptions(
'd:s' => \$directory, 'd:s' => \$directory,
'reset' => \$reset, 'reset' => \$reset,
@ -39,6 +40,7 @@ my $result = GetOptions(
'munge-config' => \$do_munge, 'munge-config' => \$do_munge,
'a' => \$authorities, 'a' => \$authorities,
'h|help' => \$want_help, 'h|help' => \$want_help,
'x' => \$as_xml,
); );
@ -169,7 +171,7 @@ if ($biblios) {
mkdir "$directory" unless (-d $directory); mkdir "$directory" unless (-d $directory);
mkdir "$directory/biblios" unless (-d "$directory/biblios"); mkdir "$directory/biblios" unless (-d "$directory/biblios");
open(OUT,">:utf8 ","$directory/biblios/export") or die $!; open(OUT,">:utf8 ","$directory/biblios/export") or die $!;
my $dbh=C4::Context->dbh; my $dbh=C4::Context->dbh;
my $sth; my $sth;
if ($noxml){ if ($noxml){
$sth=$dbh->prepare("select biblionumber,marc from biblioitems order by biblionumber $limit"); $sth=$dbh->prepare("select biblionumber,marc from biblioitems order by biblionumber $limit");
@ -269,7 +271,7 @@ if ($biblios) {
# CHECK biblionumber # CHECK biblionumber
# #
# #
if ($biblionumbertagfield eq '001') { if ($biblionumbertagfield eq '001') {
unless ($record->field($biblionumbertagfield) && $record->field($biblionumbertagfield)->data()) { unless ($record->field($biblionumbertagfield) && $record->field($biblionumbertagfield)->data()) {
$record_correct=0; $record_correct=0;
my $field; my $field;
@ -335,7 +337,7 @@ if ($biblios) {
# #
my $encoding = C4::Context->preference("marcflavour"); my $encoding = C4::Context->preference("marcflavour");
# deal with UNIMARC field 100 (encoding) : create it if needed & set encoding to unicode # deal with UNIMARC field 100 (encoding) : create it if needed & set encoding to unicode
if ( $encoding eq "UNIMARC" ) { if ( $encoding eq "UNIMARC" ) {
my $string; my $string;
if ( length($record->subfield( 100, "a" )) == 35 ) { if ( length($record->subfield( 100, "a" )) == 35 ) {
$string = $record->subfield( 100, "a" ); $string = $record->subfield( 100, "a" );
@ -365,21 +367,26 @@ if ($biblios) {
substr($leader,0,5)=' '; substr($leader,0,5)=' ';
substr($leader,10,7)='22 '; substr($leader,10,7)='22 ';
$record->leader(substr($leader,0,24)); $record->leader(substr($leader,0,24));
print OUT $record->as_usmarc(); if($as_xml) {
} print OUT $record->as_xml_record();
} else {
print OUT $record->as_usmarc();
}
}
}
close(OUT); close(OUT);
} }
}
# #
# and reindexing everything # and reindexing everything
# #
print "====================\n"; print "====================\n";
print "REINDEXING zebra\n"; print "REINDEXING zebra\n";
print "====================\n"; print "====================\n";
system("zebraidx -g iso2709 -c ".C4::Context->zebraconfig('biblioserver')->{config}." -d biblios init") if ($reset); my $record_fmt = ($as_xml) ? 'marcxml' : 'iso2709' ;
system("zebraidx -g iso2709 -c ".C4::Context->zebraconfig('biblioserver')->{config}." $noshadow -d biblios update $directory/biblios"); system("zebraidx -g $record_fmt -c ".C4::Context->zebraconfig('biblioserver')->{config}." -d biblios init") if ($reset);
system("zebraidx -g iso2709 -c ".C4::Context->zebraconfig('biblioserver')->{config}." -d biblios commit") unless $noshadow; system("zebraidx -g $record_fmt -c ".C4::Context->zebraconfig('biblioserver')->{config}." $noshadow -d biblios update $directory/biblios");
system("zebraidx -g $record_fmt -c ".C4::Context->zebraconfig('biblioserver')->{config}." -d biblios commit") unless $noshadow;
} else { } else {
print "skipping biblios\n"; print "skipping biblios\n";
} }
@ -442,6 +449,9 @@ Parameters:
option is recommended only option is recommended only
for advanced user. for advanced user.
-x export and index as xml instead of is02709 (biblios only).
use this if you might have records > 99,999 chars,
-w skip shadow indexing for this batch -w skip shadow indexing for this batch
-munge-config Deprecated option to try -munge-config Deprecated option to try