From 6dca540053020860f62d86a9e02d2ad0d45af0df Mon Sep 17 00:00:00 2001 From: David Gustafsson Date: Thu, 2 Nov 2017 13:44:13 +0100 Subject: [PATCH] Bug 19563: Generation of sort_fields uses incorrect condition Fix incorrect condition for if clause for generating __sort mappings for Elasticsearch. Also remove redundant check for same condition when generating fixer rules. Test plan: 1. Inspect current mappings for example by viewing: http://:9200/koha__biblios/_mapping. 2. If using the default configuraion only "author" has a sort field (author__sort). 4. Appy patch. 5. Reindex using rebuild_elastic_search.pl. 6. All fields except those with sort sort set to "0" should now have sort fields, which in the default configuration is all but "author". Signed-off-by: David Bourgault Signed-off-by: Julian Maurice Signed-off-by: Jonathan Druart Signed-off-by: Nick Clemens --- Koha/SearchEngine/Elasticsearch.pm | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/Koha/SearchEngine/Elasticsearch.pm b/Koha/SearchEngine/Elasticsearch.pm index de4b18ce4d..2b2fd109e3 100644 --- a/Koha/SearchEngine/Elasticsearch.pm +++ b/Koha/SearchEngine/Elasticsearch.pm @@ -215,9 +215,10 @@ sub get_elasticsearch_mappings { search_analyzer => 'simple', }; } - # Sort may be true, false, or undef. Here we care if it's - # anything other than undef. - if (defined $sort) { + # Sort is a bit special as it can be true, false, undef. + # We care about "true" or "undef", + # "undef" means to do the default thing, which is make it sortable. + if ($sort || !defined $sort) { $mappings->{data}{properties}{ $name . '__sort' } = { search_analyzer => "analyser_phrase", analyzer => "analyser_phrase", @@ -346,14 +347,8 @@ sub get_fixer_rules { if ($type eq 'sum' ) { push @rules, "sum('$name')"; } - # Sort is a bit special as it can be true, false, undef. For - # fixer rules, we care about "true", or "undef" if there is - # special handling of this field from other one. "undef" means - # to do the default thing, which is make it sortable. if ($self->sort_fields()->{$name}) { - if ($sort || !defined $sort) { - push @rules, "marc_map('$marc_field','${name}__sort.\$append', $options)"; - } + push @rules, "marc_map('$marc_field','${name}__sort.\$append', $options)"; } } ); -- 2.39.5