From 1f71114d9b56e1aed8fc8582d7fbcbdb41a18e8e Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 24 Apr 2020 13:34:31 +0000 Subject: [PATCH] Bug 25277: Don't specify a field in query if none passed == test plan == To test: 0 - Have Koha running with ES 6 enabled 1 - Launch the z3950 responder: perl misc/z3950_responder.pl --config-dir /kohadevbox/koha/etc/z3950 --debug 2 - Connect using yaz-client: yaz-client localhost:2100 2.1 Alternative, if you add the responder as a Z39.50 server in Koha and do a catalogue Z39.50 search. Don't forget to search in the keywords field. Not the title field. 3 - base biblios 4 - find bruce 5 - No results 6 - Stop the responder 7 - Apply patch 8 - Repeat 9 - This time you get results Signed-off-by: Victor Grousset/tuxayo Signed-off-by: Jonathan Druart Signed-off-by: Martin Renvoize Signed-off-by: Joy Nelson --- Koha/Z3950Responder/RPN.pm | 13 +++++++++---- etc/z3950/attribute_mappings.yaml | 2 -- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Koha/Z3950Responder/RPN.pm b/Koha/Z3950Responder/RPN.pm index a1bfeff7eb..56c2fbbe31 100644 --- a/Koha/Z3950Responder/RPN.pm +++ b/Koha/Z3950Responder/RPN.pm @@ -40,7 +40,7 @@ sub to_koha { my ($self, $mappings) = @_; my $attrs = $self->{'attributes'}; - my $fields = $mappings->{use}{default} // '_all'; + my $fields = $mappings->{use}{default}; my $split = 0; my $prefix = ''; my $suffix = ''; @@ -62,7 +62,7 @@ sub to_koha { } } - $fields = [$fields] unless ref($fields) eq 'ARRAY'; + $fields = [$fields] unless !defined $fields || ref($fields) eq 'ARRAY'; if ($split) { my @terms; @@ -72,8 +72,12 @@ sub to_koha { next if (!$word); $word = $self->escape($word); my @words; - foreach my $field (@{$fields}) { - push(@words, "$field:($prefix$word$suffix)"); + if( $fields ) { + foreach my $field (@{$fields}) { + push(@words, "$field:($prefix$word$suffix)"); + } + } else { + push(@words, "($prefix$word$suffix)"); } push (@terms, join(' OR ', @words)); } @@ -82,6 +86,7 @@ sub to_koha { my @terms; $term = $self->escape($term); + return "($prefix$term$suffix)" unless $fields; foreach my $field (@{$fields}) { push(@terms, "$field:($prefix$term$suffix)"); } diff --git a/etc/z3950/attribute_mappings.yaml b/etc/z3950/attribute_mappings.yaml index 21d7e8f3f6..c4923fc532 100644 --- a/etc/z3950/attribute_mappings.yaml +++ b/etc/z3950/attribute_mappings.yaml @@ -8,7 +8,6 @@ authorities: 3: Heading 9: LC-card-number 12: Local-number - default: _all biblios: # BIB-1 use attributes to index fields use: @@ -43,4 +42,3 @@ biblios: 1031: itype 1033: Host-Item-Number 1045: control-number - default: _all -- 2.39.5