X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=server.pl;h=8262c2ac67d3dbadb9f056f53cd0213b966a4ec9;hb=eb4809ffe89cc83a68a1da0c4cb654b81d47e35e;hp=8d7494e1f5d69f8986f515ad35eb07d0f9e7040a;hpb=ea9f8136078a1f447922c8eb721504372071fed3;p=Biblio-Z3950.git diff --git a/server.pl b/server.pl index 8d7494e..8262c2a 100755 --- a/server.pl +++ b/server.pl @@ -6,9 +6,11 @@ use strict; use Net::Z3950::SimpleServer; use Net::Z3950::OID; use Data::Dumper; -use COBISS; +#use COBISS; use Aleph; use GoogleBooks; +use vuFind; +use DPLA; use Encode; @@ -19,6 +21,8 @@ my $databases = { 'NSK10' => 'Aleph', 'ZAG01' => 'Aleph', 'GOOGLEBOOKS' => 'GoogleBooks', + 'HATHITRUST' => 'vuFind', + 'DPLA' => 'DPLA', }; my $max_records = 3; # XXX configure this @@ -193,27 +197,32 @@ 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; use Data::Dump qw(dump); -use COBISS; sub render { my ($self,$usemap) = @_; @@ -262,14 +271,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 . $self->{term} . '*'; + } print "# q: $q\n"; return $q; }