+
+# -----------------------------------------------------------------------------
+# Search
+# -----------------------------------------------------------------------------
+sub search {
+ my ($self, %args) = @_;
+
+ if ($args{cqlmap}) { $self->cqlmap($args{cqlmap}); }
+
+ my $query;
+ if ($args{pqf}) {
+ $query = $args{pqf};
+ }
+ elsif ($args{cql}) {
+ unless ($query = $self->cql2pqf($args{cql})) {
+ croak ("Invalid CQL query: '$args{cql}'");
+ }
+ }
+ unless ($query) {
+ croak ("No query given to search");
+ }
+
+ my $rsname = $args{rsname} ? $args{rsname} : $self->_new_setname;
+
+ return ($self->_search_pqf($query, $rsname));
+}
+
+sub _new_setname {
+ my ($self) = @_;
+ return ("set_".$self->{rscount}++);
+}
+
+sub _search_pqf {
+ my ($self, $query, $setname) = @_;
+
+ my $hits = IDZebra::search_PQF($self->{zh},
+ $self->{odr_input},
+ $self->{odr_output},
+ $query,
+ $setname);
+
+ my $rs = IDZebra::Resultset->new($self,
+ name => $setname,
+ recordCount => $hits,
+ errCode => $self->errCode,
+ errString => $self->errString);
+ return($rs);
+}
+