From 1f5e7ec54d83679c064e636caae249904e4c43d8 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 14 May 2021 13:30:46 +0000 Subject: [PATCH] Bug 28326: Escape special characters in title when searching for analytics Bug 26313 introduced a search for analytics, which is great, but it started sending titles to ES. This, unfrotunately, caused problems where the title contained reserved ES characters. As these searches should always be literl title searches, we should escape all the ES characters before the search. We should not make this a standard, however, as then it prevents using the characters for advanced ES searching To test: 1 - Have ES setup and running and swtich SearchEngine syspref to 'Elasticsearch' 2 - Edit a record and add some reserved ES characters to the title https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html e.g. De [Crasi] Aristophea. 3 - You get an error on the detail page loading 4 - Apply patch 5 - Reload 6 - The page successfully loads Signed-off-by: David Nind Signed-off-by: Martin Renvoize --- catalogue/detail.pl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/catalogue/detail.pl b/catalogue/detail.pl index 8d06f0da51..43bd6831c1 100755 --- a/catalogue/detail.pl +++ b/catalogue/detail.pl @@ -128,6 +128,9 @@ if ( $xslfile ) { { index => $Koha::SearchEngine::BIBLIOS_INDEX } ); my $cleaned_title = $biblio->title; + $cleaned_title =~ s/(\+|\-|\=|\&\&|\|\||\!|\(|\)|\{|\}|\[|\]|\^|\"|\~|\*|\?|\:|\\|\/)/\\$1/g; + $cleaned_title =~ s/(<|>)/ /g; + $cleaned_title =~ tr|/||; my $query = ( C4::Context->preference('UseControlNumber') and $record->field('001') ) -- 2.20.1