/[pg-zoom]/zoom.sql
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /zoom.sql

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2 by dpavlin, Thu Apr 26 19:25:45 2007 UTC revision 9 by dpavlin, Thu Apr 26 22:19:40 2007 UTC
# Line 3  create table servers ( Line 3  create table servers (
3          host    text not null,          host    text not null,
4          port    int not null default 210,          port    int not null default 210,
5          database text default 'Default',          database text default 'Default',
6            maxres  int not null default 100,
7          primary key(name)          primary key(name)
8  );  );
9    
10  -- insert sample  -- insert sample
11  insert into servers values ( 'NSK', '161.53.240.27', 8090, 'voyager' );  insert into servers values ( 'nsk', '161.53.240.27', 8090, 'voyager', 0 );
12    insert into servers values ( 'nsk-en', '161.53.240.27', 8190, 'voyager', 300 );
13    insert into servers values ( 'loc', 'z3950.loc.gov', 7090, 'Voyager', 300 );
14    insert into servers values ( 'ucs', 'library.usc.edu', 2200, 'unicorn', 100 );
15    --insert into servers values ( '', '', , '' );
16    
17  create type item as (  create type item as (
18          title text,          title text,
# Line 16  create type item as ( Line 21  create type item as (
21          date text          date text
22  );  );
23    
24  create or replace function search(text)  create or replace function search(text,text)
25  returns setof item  returns setof item
26  language plperlu  language plperlu
27  as $$  as $$
28    
29  my ( $query ) = @_;  use strict;
30    
31  my ( $host, $port, $database ) =  my $debug = 0;
32          ( '161.53.240.27', 8090, 'voyager' );  
33    my ( $server, $query ) = @_;
34    
35    my $rv = spi_exec_query(qq{
36            select host,port,database,maxres from servers where name ilike '$server'
37    },1);
38    
39    die "can't find server $server in table servers\n" unless ( $rv->{processed} == 1 );
40    
41    my ( $host, $port, $database, $max_res ) = (
42            $rv->{rows}[0]->{host},
43            $rv->{rows}[0]->{port},
44            $rv->{rows}[0]->{database},
45            $rv->{rows}[0]->{maxres},
46    );
47    
48  use ZOOM;  use ZOOM;
49  use MARC::Record;  use MARC::Record;
# Line 52  my $conn = new ZOOM::Connection($host, $ Line 71  my $conn = new ZOOM::Connection($host, $
71    
72  $conn->option(preferredRecordSyntax => "usmarc");  $conn->option(preferredRecordSyntax => "usmarc");
73    
74  my $cqf = q2cqf( $query );  my $rs;
75    
76    my $notice;
77    
78  my $rs = $conn->search_pqf( $cqf );  if ( $query =~ m/[\s="]|(and|or|not)/ ) {
79            $rs = $conn->search( new ZOOM::Query::CQL( $query ) );
80            $notice = 'CQL';
81    } else {
82            my $cqf = q2cqf( $query );
83            $notice = "CQF: $cqf";
84            $rs = $conn->search_pqf( $cqf );
85    }
86    
87  my $n = $rs->size();  my $n = $rs->size();
88    if ( $n > $max_res ) {
89            warn "query returned $n results, fetching first $max_res\n";
90            $n = $max_res;
91    }
92  # fetch all results  # fetch all results
93  $rs->records(0, $n - 1, 0);  $rs->records(0, $n - 1, 0);
94    
95  warn "$n results for '$query' [$cqf]\n";  warn "$n results for '$query' $notice\n";
96    
97  sub strip_non_digit {  sub strip_non_digit {
98          my $d = shift;          my $d = shift;
# Line 74  sub e { Line 106  sub e {
106          my $t = shift;          my $t = shift;
107          $t =~ s/éc/è/g;          $t =~ s/éc/è/g;
108          $t =~ s/âc/æ/g;          $t =~ s/âc/æ/g;
         $t =~ s/és/¹/g;  
109          $t =~ s/éz/¾/g;          $t =~ s/éz/¾/g;
110            $t =~ s/és/¹/g;
111            $t =~ s/³/ð/g;
112          $t =~ s/éC/È/g;          $t =~ s/éC/È/g;
113          $t =~ s/âC/Æ/g;          $t =~ s/âC/Æ/g;
         $t =~ s/éS/©/g;  
114          $t =~ s/éZ/®/g;          $t =~ s/éZ/®/g;
115            $t =~ s/éS/©/g;
116          $t =~ s/£/Ð/g;          $t =~ s/£/Ð/g;
117          warn "## $t\n";          warn "## $t\n" if $debug;
118  #       $t = decode('iso-8859-2', $t);  #       $t = decode('iso-8859-2', $t);
119  #       return encode('utf-8',$t);  #       return encode('utf-8',$t);
120          return $t;          return $t;
# Line 109  $$; Line 142  $$;
142  -- select * from search('title:djece');  -- select * from search('title:djece');
143  -- select * from search('osman');  -- select * from search('osman');
144    
145  select * from search('title:mor');  --select * from search('nsk','title:mor');
146    --select * from search('nsk','grada');
147    --select * from search('nsk-en','restrictions');
148    
149    --select * from search('ucs','human');
150    
151    SELECT date,count(date)
152    FROM search('loc','human and computer and interaction')
153    GROUP BY date

Legend:
Removed from v.2  
changed lines
  Added in v.9

  ViewVC Help
Powered by ViewVC 1.1.26