From 55bc465e46291d8c26e7ca82754b9e7d23e71788 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 10 Dec 2019 15:24:36 +0100 Subject: [PATCH] Bug 24123: Fix import of UTF-8 encoded MARC21 MARCXML using bulkmarcimport (elastic only) If elastic is used as search engine, the bulkmarcimport.pl will not handle correctly UTF-8 encoded MARCXML Koha::SearchEngine::Search->new uses a require statement to load the correct Search module. This is done l.257 of bulkmarcimport.pl: 257 my $searcher = Koha::SearchEngine::Search->new Koha::SearchEngine::Elasticsearch::Search will `use MARC::File::XML`, and so resets the arguments set before: 216 $MARC::File::XML::_load_args{BinaryEncoding} = 'utf-8'; 220 $MARC::File::XML::_load_args{RecordFormat} = $recordformat; An easy (but dirty) fix could be to move the declaration of my $searcher before in the script. The tricky (but correct) fix would be to remove the long standing "ugly hack follows" comment. This patch is the easy, and dirty, fix Test plan: Use the command line tool to import MARXCML records that contains unicode characters into Koha Something like `misc/migration_tools/bulkmarcimport.pl -biblios -file record.marcxml -m=MARCXML` Without this patch you will notice that unicode characters will not be displayed correctly Signed-off-by: Michal Denar Signed-off-by: Tomas Cohen Arazi --- misc/migration_tools/bulkmarcimport.pl | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/misc/migration_tools/bulkmarcimport.pl b/misc/migration_tools/bulkmarcimport.pl index bc438aac38..a441c071fa 100755 --- a/misc/migration_tools/bulkmarcimport.pl +++ b/misc/migration_tools/bulkmarcimport.pl @@ -199,6 +199,17 @@ if ($test_parameter) { my $marcFlavour = C4::Context->preference('marcflavour') || 'MARC21'; +# The definition of $searcher must be before MARC::Batch->new +my $searcher = Koha::SearchEngine::Search->new( + { + index => ( + $authorities + ? $Koha::SearchEngine::AUTHORITIES_INDEX + : $Koha::SearchEngine::BIBLIOS_INDEX + ) + } +); + print "Characteristic MARC flavour: $marcFlavour\n" if $verbose; my $starttime = gettimeofday; my $batch; @@ -254,16 +265,6 @@ if ($logfile){ print $loghandle "id;operation;status\n"; } -my $searcher = Koha::SearchEngine::Search->new( - { - index => ( - $authorities - ? $Koha::SearchEngine::AUTHORITIES_INDEX - : $Koha::SearchEngine::BIBLIOS_INDEX - ) - } -); - RECORD: while ( ) { my $record; # get records -- 2.24.1