From 88d9f3cd663d618160086024a90a73383c693986 Mon Sep 17 00:00:00 2001 From: David Gustafsson Date: Mon, 24 Feb 2020 15:47:31 +0100 Subject: [PATCH] Bug 24720: Strip special chars from search fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Strip all non alphanumerical characters from beginning of search field values so that sorting is performed on the first alphanumeric character and not special characters like "-" or "[". To test: 1. Prepend "[" to the title of a biblio and save 2. Perform a search that matches this biblio and at least one more biblio. 3. Sort alphabetically a-z. 4. The biblio with "[" should appear first 5. Apply the patch 6. Perform a full reindexing 7. Perform steps 2-3 again 8. The result should now be alphabetically sorted, ignoring the initial bracket in the title. Signed-off-by: Séverine QUEUNE --- Koha/SearchEngine/Elasticsearch.pm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Koha/SearchEngine/Elasticsearch.pm b/Koha/SearchEngine/Elasticsearch.pm index 07b3763..513348c 100644 --- a/Koha/SearchEngine/Elasticsearch.pm +++ b/Koha/SearchEngine/Elasticsearch.pm @@ -691,6 +691,8 @@ sub marc_records_to_documents { if ($field =~ /__sort$/) { # Make sure to keep the sort field length sensible. 255 was chosen as a nice round value. $record_document->{$field} = [substr(join(' ', @{$record_document->{$field}}), 0, 255)]; + # Strip any initial non-word characters which don't make much sense to sort on + $record_document->{$field} = [map { s/^\W+//u; $_ } @{$record_document->{$field}}]; } } } -- 2.1.4