From 25a2f37d2e2ba5c1b48cd583e0d2c20420f0966b Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 17 Nov 2017 12:13:55 +0000 Subject: [PATCH] Bug 19563: Followup - Restore checking sort variable This code seems a bit odd, $self->sort_fields()->{$name} is checking if there is any mapping in ES for a field, so if one marc field in an index is marked as sortable this will exists. We need to check the individual marc field to see if it should be added to the sort index here. If you apply the first patch, reindex, and view a record in es: curl -XGET 'localhost:9200/koha_kohadev_biblios/data/19/?pretty' | grep -A 10 author__sort You will see that 245$c is included in the record without that additional check Apply this, reindex again, and that field should not be included --- Koha/SearchEngine/Elasticsearch.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Koha/SearchEngine/Elasticsearch.pm b/Koha/SearchEngine/Elasticsearch.pm index 2b2fd10..85a20a9 100644 --- a/Koha/SearchEngine/Elasticsearch.pm +++ b/Koha/SearchEngine/Elasticsearch.pm @@ -297,7 +297,6 @@ sub reset_elasticsearch_mappings { # sort_fields isn't set, then it'll generate it. sub sort_fields { my $self = shift; - if (@_) { $self->_sort_fields_accessor(@_); return; @@ -348,7 +347,9 @@ sub get_fixer_rules { push @rules, "sum('$name')"; } if ($self->sort_fields()->{$name}) { - push @rules, "marc_map('$marc_field','${name}__sort.\$append', $options)"; + if ($sort || !defined $sort) { + push @rules, "marc_map('$marc_field','${name}__sort.\$append', $options)"; + } } } ); -- 2.1.4