From 7a80c94d96d5d0717d9a73a4d73fd1b7256bb181 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=utf8 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 Signed-off-by: Séverine QUEUNE Signed-off-by: Nick Clemens Signed-off-by: Martin Renvoize --- 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 ce1770320a..16532018ba 100644 --- a/Koha/SearchEngine/Elasticsearch.pm +++ b/Koha/SearchEngine/Elasticsearch.pm @@ -815,7 +815,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.39.5