View | Details | Raw Unified | Return to bug 10160
Collapse All | Expand All

(-)a/misc/z3950_test.pl (-1 / +120 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
use strict;
4
use warnings;
5
6
use Getopt::Long;
7
use List::Util qw/min/;
8
use ZOOM;
9
10
# command-line parameters
11
my $host     = undef;
12
my $port     = undef;
13
my $database = undef;
14
my $verbose  = 0;
15
my ( $isbn, $issn, $title, $author, $dewey, $subject, $lccn, $lccall, $controlnumber, $stdid, $srchany );
16
17
my $result = GetOptions(
18
    'h|host=s'     => \$host,
19
    'p|port=s'     => \$port,
20
    'd|database=s' => \$database,
21
22
    'isbn=s'          => \$isbn,
23
    'issn=s'          => \$issn,
24
    'title=s'         => \$title,
25
    'author=s'        => \$author,
26
    'dewey=s'         => \$dewey,
27
    'subject=s'       => \$subject,
28
    'lccn=s'          => \$lccn,
29
    'lccall=s'        => \$lccall,
30
    'controlnumber=s' => \$controlnumber,
31
    'stdid=s'         => \$stdid,
32
    'srchany=s'       => \$srchany,
33
34
    'v|verbose' => \$verbose,
35
);
36
37
die("Error: missing required options") unless ( $host && $port && $database );
38
39
print "\n";
40
print "Using host '$host'\n";
41
print "Using port '$port'\n";
42
print "Using database '$database'\n";
43
print "\n";
44
45
my $query = '';
46
my $nterms;
47
if ($isbn) {
48
    $query .= " \@attr 1=7 \@attr 5=1 \"$isbn\" ";
49
    $nterms++;
50
}
51
if ($issn) {
52
    $query .= " \@attr 1=8 \@attr 5=1 \"$issn\" ";
53
    $nterms++;
54
}
55
if ($title) {
56
    utf8::decode($title);
57
    $query .= " \@attr 1=4 \"$title\" ";
58
    $nterms++;
59
}
60
if ($author) {
61
    utf8::decode($author);
62
    $query .= " \@attr 1=1003 \"$author\" ";
63
    $nterms++;
64
}
65
if ($dewey) {
66
    $query .= " \@attr 1=16 \"$dewey\" ";
67
    $nterms++;
68
}
69
if ($subject) {
70
    utf8::decode($subject);
71
    $query .= " \@attr 1=21 \"$subject\" ";
72
    $nterms++;
73
}
74
if ($lccn) {
75
    $query .= " \@attr 1=9 $lccn ";
76
    $nterms++;
77
}
78
if ($lccall) {
79
    $query .= " \@attr 1=16 \@attr 2=3 \@attr 3=1 \@attr 4=1 \@attr 5=1 \@attr 6=1 \"$lccall\" ";
80
    $nterms++;
81
}
82
if ($controlnumber) {
83
    $query .= " \@attr 1=12 \"$controlnumber\" ";
84
    $nterms++;
85
}
86
if ($stdid) {
87
    $query .= " \@attr 1=1007 \"$stdid\" ";
88
    $nterms++;
89
}
90
if ($srchany) {
91
    $query .= " \@attr 1=1016 \"$srchany\" ";
92
    $nterms++;
93
}
94
for my $i ( 1 .. $nterms - 1 ) {
95
    $query = "\@and " . $query;
96
}
97
warn "\nQUERY: $query\n\n";
98
99
my ( $start_run, $end_run );
100
101
my $conn = new ZOOM::Connection( $host, $port, databaseName => $database );
102
$conn->option( preferredRecordSyntax => "usmarc" );
103
$start_run = time();
104
my $rs = $conn->search_pqf($query);
105
my $n  = $rs->size();
106
107
## Koha only display 20 results per page, so set
108
## $i to no more than 20
109
for ( my $i = 0 ; $i < min( $n, 20 ) ; $i++ ) {
110
    my $record = $rs->record($i)->render();
111
    print "\n$record\n" if $verbose;
112
}
113
114
$end_run = time();
115
116
print "\nRecieved $n results\n";
117
118
my $run_time = $end_run - $start_run;
119
print "\nSearch took $run_time seconds\n\n";
120

Return to bug 10160