From 37d9c7fd7be3ea945cac9033872846c8c4a5aa46 Mon Sep 17 00:00:00 2001 From: Nicolas Legrand Date: Mon, 23 Sep 2019 18:55:56 +0200 Subject: [PATCH] Bug 23671: Elasticsearch shouldn't throw exception on an uppercase subfield identifier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prevent Elasticsearch from throwing an exception when the mappings include uppercase subfield identifier. Though forbidden in MARC21, It doesn't seem to be the case for Unimarc or ISO 2709 as a whole. It is also possible to define such a subfield identifier in the Koha MARC Framework and in the Elasticsearch mappings. Test plan: 1. add a 995Z subfield identifier in Elasticsearch mappings (Administration -> Search engine configuration) 2. run $KOHA_PATH/misc/search_tools/rebuild_elasticsearch.pl -v -d -b 3. see it throw: “Invalid MARC field expression: 995Z” 4. apply patch 5. rerun $KOHA_PATH/misc/search_tools/rebuild_elasticsearch.pl -v -d -b 6. sababa --- Koha/SearchEngine/Elasticsearch.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Koha/SearchEngine/Elasticsearch.pm b/Koha/SearchEngine/Elasticsearch.pm index 3104e2a..1dbaf81 100644 --- a/Koha/SearchEngine/Elasticsearch.pm +++ b/Koha/SearchEngine/Elasticsearch.pm @@ -780,7 +780,7 @@ which is terribly slow. sub _get_marc_mapping_rules { my ($self) = @_; my $marcflavour = lc C4::Context->preference('marcflavour'); - my $field_spec_regexp = qr/^([0-9]{3})([()0-9a-z]+)?(?:_\/(\d+(?:-\d+)?))?$/; + my $field_spec_regexp = qr/^([0-9]{3})([()0-9a-zA-Z]+)?(?:_\/(\d+(?:-\d+)?))?$/; my $leader_regexp = qr/^leader(?:_\/(\d+(?:-\d+)?))?$/; my $rules = { 'leader' => [], -- 2.1.4