Bug 30142: Remove spaces from ElasticSearch mapping MARC fields
authorThomas Klausner <domm@plix.at>
Mon, 21 Feb 2022 11:35:15 +0000 (12:35 +0100)
committerFridolin Somers <fridolin.somers@biblibre.com>
Wed, 13 Apr 2022 13:55:39 +0000 (15:55 +0200)
A first step to "validate" the MARC mappings: Remove all whitespace, so
if a user enters "245a " (with a trailing whitespace, which can easily
happen when copy/pasting) we only store "245a" in the DB. This is
neccessary, because the ES indexer will throw an exception in an invalid
MARC mapping.

Test Plan:
* Go to /cgi-bin/koha/admin/searchengine/elasticsearch/mappings.pl
* Go to the Bibliographic Records Tab
* Enter "100 a b c " (notice the whitespaces!) in the first "mapping"
  field
* Scroll down and save
* Go back to the Bibliographic Records Tab
* The spaces are still there

Now apply the patch

* Repeat the above steps
* After saving you should see "100abc" without any spaces in the
  "mapping" field

Sponsored-by: Steiermärkische Landesbibliothek
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
admin/searchengine/elasticsearch/mappings.pl

index b3a05ac..e4d5ab1 100755 (executable)
@@ -157,7 +157,10 @@ if ( $op eq 'edit' ) {
             my $search_field = Koha::SearchFields->find({ name => $search_field_name }, { key => 'name' });
             $mandatory_after++ if $search_field->mandatory && !defined $seen_fields{$search_field_name};
             $seen_fields{$search_field_name} = 1;
+
             # TODO Check mapping format
+            $mapping_marc_field =~ s/\s//g;
+
             my $marc_field = Koha::SearchMarcMaps->find_or_create({
                 index_name => $index_name,
                 marc_type => $marc_type,