1 # $Id: Resultset.pm,v 1.5 2003-03-03 00:45:37 pop Exp $
3 # Zebra perl API header
4 # =============================================================================
5 package IDZebra::Resultset;
12 use IDZebra::Logger qw(:flags :calls);
13 use Scalar::Util qw(weaken);
15 our $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
16 our @ISA = qw(IDZebra::Logger);
20 # -----------------------------------------------------------------------------
21 # Class constructors, destructor
22 # -----------------------------------------------------------------------------
24 my ($proto,$session, %args) = @_;
25 my $class = ref($proto) || $proto;
27 bless ($self, $class);
29 $self->{session} = $session;
30 weaken ($self->{session});
32 $self->{odr_stream} = IDZebra::odr_createmem($IDZebra::ODR_DECODE);
34 $self->{name} = $args{name};
35 $self->{recordCount} = $args{recordCount};
36 $self->{errCode} = $args{errCode};
37 $self->{errString} = $args{errString};
44 return ($self->{recordCount});
48 return ($self->{recordCount});
53 return ($self->{errCode});
58 return ($self->{errCode});
61 # =============================================================================
67 if ($self->{odr_stream}) {
68 IDZebra::odr_reset($self->{odr_stream});
69 IDZebra::odr_destroy($self->{odr_stream});
70 $self->{odr_stream} = undef;
73 # delete($self->{ro});
74 # delete($self->{session}{resultsets}{$self->{name}});
75 delete($self->{session});
77 # -----------------------------------------------------------------------------
79 my ($self, %args) = @_;
81 my $from = $args{from} ? $args{from} : 1;
82 my $to = $args{to} ? $args{to} : $self->{recordCount};
84 my $elementSet = $args{elementSet} ? $args{elementSet} : 'R';
85 my $schema = $args{schema} ? $args{schema} : '';
86 my $recordSyntax = $args{recordSyntax} ? $args{recordSyntax} : '';
88 my $class = $args{class} ? $args{class} : '';
91 my $ro = IDZebra::RetrievalObj->new();
92 IDZebra::records_retrieve($self->{session}{zh},
105 for (my $i=$from; $i<=$to; $i++) {
106 my $rec = IDZebra::RetrievalRecord->new();
107 IDZebra::record_retrieve($ro, $self->{odr_stream}, $rec, $i-$from+1);
115 IDZebra::odr_reset($self->{odr_stream});
120 # ============================================================================
122 my ($self, $sortspec, $setname) = @_;
124 $_[0] = $self->{session}->sortResultsets($sortspec,
125 $self->{name}, ($self));
128 return ($self->{session}->sortResultsets($sortspec,
133 # ============================================================================
138 IDZebra::Resultset - Representation of Zebra search results
144 The I<Resultset> object represents results of a Zebra search. Contains number of hits, search status, and can be used to sort and retrieve the records.
150 printf ("RS Status is %d (%s)\n", $rs->errCode, $rs->errString);
152 I<$rs-E<gt>errCode> is 0, if there were no errors during search.
154 =head1 RETRIEVING RECORDS
163 Peter Popovics, pop@technomat.hu
167 IDZebra, IDZebra::Data1, Zebra documentation