Bug 25277: Don't specify a field in query if none passed
authorNick Clemens <nick@bywatersolutions.com>
Fri, 24 Apr 2020 13:34:31 +0000 (13:34 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Mon, 18 May 2020 14:27:11 +0000 (15:27 +0100)
== 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 <victor@tuxayo.net>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Koha/Z3950Responder/RPN.pm
etc/z3950/attribute_mappings.yaml

index 63fbbdd..cdc43a7 100644 (file)
@@ -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)");
     }
index 21d7e8f..c4923fc 100644 (file)
@@ -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