Bug 33407: With ES and QueryAutoTruncate on, a search containing ISBD punctuation returns no results
With ES and QueryAutoTruncate on, a search with punctuation surrounded by spaces (like ISBD punctuation copied from other catalogue or bibliography) returns no results. E.g.: in a search for "Maria Stuart ; Die Jungfrau von Orleans / Schiller" (coded in record as 245 10 $a Maria Stuart ; $b Die Jungfrau von Orleans / $c Schiller) -- both semicolon and slash cause problems. One had to remove them manually to get results which is not what is desired. Test plan ========= 1. Use ktd with Elasticsearch and ktd's test data (http://localhost:8081/cgi-bin/koha/catalogue/detail.pl?biblionumber=1): 2. Make a search for the first ISBD zone taken verbatim from the first record: E Street shuffle : the glory days of Bruce Springsteen & the E Street Band / Clinton Heylin There should be no result. 3. Apply teh patch, restart plack. 4. Repeat the search. You should get the record (and onother one). Sponsored-by: Ignatianum University in Cracow Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl> Signed-off-by: Thomas Klausner <domm@plix.at> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
parent
aa2befcec8
commit
a871ad191b
|
|
@ -1024,6 +1024,9 @@ sub clean_search_term {
|
|||
# screen all brackets with backslash
|
||||
$term =~ s/(?<!\\)(?:[\\]{2})*([\{\}\[\]])$lookahead/\\$1/g;
|
||||
|
||||
# remove problematic punctuation and escaped slashes surrounded by spaces if truncate
|
||||
$term =~ s/\s+(\s*[&;,:\.=\-\/]|(\\\/)\s*)+\s$lookahead/ /g if $truncate;
|
||||
|
||||
# restore all regex contents after escaping brackets:
|
||||
for (my $i = 0; $i < @saved_regexes; $i++) {
|
||||
$term =~ s/~~RE$i~~/$saved_regexes[$i]/;
|
||||
|
|
|
|||
Loading…
Reference in New Issue