From 2416eb111e7f9b5811648d936d5ef5abe82b5fbf Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Wed, 25 Apr 2012 14:31:19 +0200 Subject: [PATCH] vuFind needs query rewritten in params using php [] sic! --- server.pl | 26 ++++++++++++++++++-------- t/yaz/vuFind | 2 +- vuFind.pm | 11 ++++++++++- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/server.pl b/server.pl index 507be61..f607591 100755 --- 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; } diff --git a/t/yaz/vuFind b/t/yaz/vuFind index 60cbfad..bcafd50 100644 --- a/t/yaz/vuFind +++ b/t/yaz/vuFind @@ -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 diff --git a/vuFind.pm b/vuFind.pm index ffdd987..82c96f5 100644 --- 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"; -- 2.20.1