vuFind needs query rewritten in params using php [] sic!
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 25 Apr 2012 12:31:19 +0000 (14:31 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 25 Apr 2012 12:31:19 +0000 (14:31 +0200)
server.pl
t/yaz/vuFind
vuFind.pm

index 507be61..f607591 100755 (executable)
--- a/server.pl
+++ b/server.pl
@@ -195,21 +195,27 @@ package Net::Z3950::RPN::And;
 
 sub render {
        my ($self,$usemap) = @_;
-    return $self->[0]->render($usemap) . ' AND ' . $self->[1]->render($usemap);
+    return $self->[0]->render($usemap)
+               . ( $usemap->{RPN}->{And} || ' AND ' )
+               . $self->[1]->render($usemap);
 }
 
 package Net::Z3950::RPN::Or;
 
 sub render {
        my ($self,$usemap) = @_;
-    return $self->[0]->render($usemap) . ' OR ' . $self->[1]->render($usemap);
+    return $self->[0]->render($usemap)
+               . ( $usemap->{RPN}->{Or} || ' OR ' )
+               . $self->[1]->render($usemap);
 }
 
 package Net::Z3950::RPN::AndNot;
 
 sub render {
        my ($self,$usemap) = @_;
-    return $self->[0]->render($usemap) . ' AND NOT ' . $self->[1]->render($usemap);
+    return $self->[0]->render($usemap)
+               . ( $usemap->{RPN}->{Or} || ' AND NOT ' )
+               . $self->[1]->render($usemap);
 }
 
 package Net::Z3950::RPN::Term;
@@ -263,14 +269,18 @@ warn "# usemap ", dump($usemap);
     my $comp = $attributes->{6};
     if ($prefix) {
         if ( defined($comp) && ( $comp >= 2 ) ) {
-            $prefix = "all$prefix= ";
-        }
-        else {
-            $prefix = "$prefix=";
+            $prefix = "all$prefix"; # FIXME?
         }
     }
 
-    my $q = $prefix . $self->{term} . '*';
+       my $q;
+
+       if ( $usemap->{prefix_term} ) {
+               warn "# using custom prefix_term query";
+               $q = $usemap->{prefix_term}->( $prefix, $self->{term} );
+       } else {
+       $q = ( $prefix ? $prefix . '=' : '' ) . $self->{term} . '*';
+       }
        print "# q: $q\n";
        return $q;
 }
index 60cbfad..bcafd50 100644 (file)
@@ -1,5 +1,5 @@
 open localhost:9999/HATHITRUST
-find "Krleža"
+find @or @attr 1=4 "Krleža" @attr 1=1003 krleža
 show 1+25
 
 quit
index ffdd987..82c96f5 100644 (file)
--- a/vuFind.pm
+++ b/vuFind.pm
@@ -39,6 +39,15 @@ sub usemap {{
 #      12              => '',
 #      1007    => '',
        1016    => 'all',
+
+       RPN => {
+               And => '&bool[]=AND&',
+               Or  => '&bool[]=OR&',
+       },
+       prefix_term => sub {
+               my ( $prefix, $term ) = @_;
+               return 'type[]=' . $prefix . '&lookfor[]=' . $term;
+       }
 }};
 
 sub search {
@@ -47,7 +56,7 @@ sub search {
        die "need query" unless defined $query;
 
        # http://catalog.hathitrust.org/Search/Home?lookfor=croatia%20AND%20zagreb&type=title
-       my $url = 'http://catalog.hathitrust.org/Search/Home?lookfor=' . $query;
+       my $url = 'http://catalog.hathitrust.org/Search/Home?' . $query;
 
 diag "get $url";