From 11ebf5adece2ccc6718f7e1230e44ccc7083d74f Mon Sep 17 00:00:00 2001
From: Janusz Kaczmarek <januszop@gmail.com>
Date: Tue, 23 Jul 2024 12:49:36 +0000
Subject: [PATCH] Bug 37433: Warning 'Use of uninitialized value $f/$d in hash
 element...' in log when sorting by relevance

With ES, searches with Sort set to Relevance produce following warnings
in log file:

[WARN] Use of uninitialized value $f in hash element at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm line 728.
[WARN] Use of uninitialized value $d in hash element at /kohadevbox/koha/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm line 728.

This is because sort_by = 'relevance' does not contain underscore.

Test plan:
==========
1. Have a test environment with ES enabled.
2. Perform a search for a common word (like 'greek').  Make sure that
    the sort order is set to 'Relevance' (the default option in ktd).
    Check the content of the plack-intranet-error.log file--you should
    see warning lines with a messages
    "Use of uninitialized value $f in hash element ..."
    "Use of uninitialized value $d in hash element ..."
3. Apply the patch;  restart_all.
4. Repeat p. 2.  The log should be clean now.

Sponsored-by: Ignatianum University in Cracow
---
 Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
index dea84c83a2..ef91b125a3 100644
--- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
+++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm
@@ -720,9 +720,11 @@ sub _convert_sort_fields {
     # Convert the fields and orders, drop anything we don't know about.
     grep { $_->{field} } map {
         my ( $f, $d ) = /(.+)_(.+)/;
-        {
-            field     => $sort_field_convert{$f},
-            direction => $sort_order_convert{$d}
+        if ( $f && $d ) {
+            {
+                field     => $sort_field_convert{$f},
+                direction => $sort_order_convert{$d},
+            }
         }
     } @sort_by;
 }
-- 
2.39.2