/[webpac2]/trunk/lib/WebPAC/Search/Estraier.pm
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 /trunk/lib/WebPAC/Search/Estraier.pm

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

revision 156 by dpavlin, Sat Nov 26 14:37:33 2005 UTC revision 457 by dpavlin, Wed May 10 13:56:28 2006 UTC
# Line 3  package WebPAC::Search::Estraier; Line 3  package WebPAC::Search::Estraier;
3  use warnings;  use warnings;
4  use strict;  use strict;
5    
6  use HyperEstraier;  use Search::Estraier;
7  use Text::Iconv;  use Text::Iconv;
8  use Data::Dumper;  use Data::Dumper;
9    
# Line 13  WebPAC::Search::Estraier - search Hyper Line 13  WebPAC::Search::Estraier - search Hyper
13    
14  =head1 VERSION  =head1 VERSION
15    
16  Version 0.03  Version 0.06
17    
18  =cut  =cut
19    
20  our $VERSION = '0.03';  our $VERSION = '0.06';
21    
22  =head1 SYNOPSIS  =head1 SYNOPSIS
23    
# Line 31  L<WebPAC::Output::Estraier>. Line 31  L<WebPAC::Output::Estraier>.
31  Connect to Hyper Estraier index using HTTP  Connect to Hyper Estraier index using HTTP
32    
33   my $est = new WebPAC::Search::Estraier(   my $est = new WebPAC::Search::Estraier(
34          url => 'http://localhost:1978/node/webpac2',          masterurl => 'http://localhost:1978/',
35            database => 'webpac2',
36          user => 'admin',          user => 'admin',
37          passwd => 'admin',          passwd => 'admin',
38          encoding => 'iso-8859-2',          encoding => 'iso-8859-2',
# Line 42  Options are: Line 43  Options are:
43    
44  =over 4  =over 4
45    
46  =item url  =item maseterurl
47    
48  URI to C<estmaster> node  URI to C<estmaster> node
49    
50    =item database
51    
52    name of C<estmaster> node
53    
54  =item user  =item user
55    
56  C<estmaster> user with read rights  C<estmaster> user with read rights
# Line 76  sub new { Line 81  sub new {
81    
82          my $log = $self->_get_logger;          my $log = $self->_get_logger;
83    
84          foreach my $p (qw/url user passwd/) {          foreach my $p (qw/masterurl user passwd/) {
85                  $log->logdie("need $p") unless ($self->{$p});                  $log->logdie("need $p") unless ($self->{$p});
86          }          }
87    
88            my $url = $self->{masterurl} . '/node/' . $self->{database};
89            $self->{url} = $url;
90    
91          $log->info("opening Hyper Estraier index $self->{'url'} as $self->{'user'}");          $log->info("opening Hyper Estraier index $self->{'url'} as $self->{'user'}");
92    
93          $self->{'db'} = HyperEstraier::Node->new($self->{'url'});          $self->{db} = Search::Estraier::Node->new;
94          $self->{'db'}->set_auth($self->{'user'}, $self->{'passwd'});          $self->{db}->set_url($self->{'url'});
95            $self->{db}->set_auth($self->{'user'}, $self->{'passwd'});
96    
97          my $encoding = $self->{'encoding'} || 'ISO-8859-2';          my $encoding = $self->{'encoding'} || 'ISO-8859-2';
98          $log->info("using encoding $encoding");          $log->info("using encoding $encoding");
# Line 110  Locate items in index Line 119  Locate items in index
119          max => 100,          max => 100,
120          options => $HyperEstraier::Condition::SURE,          options => $HyperEstraier::Condition::SURE,
121          page => 42,          page => 42,
122            depth => 0,
123    );    );
124    
125  Options are close match to Hyper Estraier API, except C<get_attr> which defines  Options are close match to Hyper Estraier API, except C<get_attr> which defines
# Line 139  sub search { Line 149  sub search {
149    
150          $log->debug("args: " . Dumper( $args ));          $log->debug("args: " . Dumper( $args ));
151    
152          my $cond = HyperEstraier::Condition->new();          my $cond = Search::Estraier::Condition->new();
153          if ( ref($args->{add_attr}) eq 'ARRAY' ) {          if ( ref($args->{add_attr}) eq 'ARRAY' ) {
154                  $log->debug("adding search attributes: " . join(", ", @{ $args->{add_attr} }) );                  $log->debug("adding search attributes: " . join(", ", @{ $args->{add_attr} }) );
155                  map {                  map {
# Line 154  sub search { Line 164  sub search {
164    
165          my $max = $args->{max} || 7;          my $max = $args->{max} || 7;
166          my $page = $args->{page} || 1;          my $page = $args->{page} || 1;
167            if ($page < 1) {
168                    $log->warn("page number $page < 1");
169                    $page = 1;
170            }
171    
172          $cond->set_max( $page * $max );          $cond->set_max( $page * $max );
173    
174          my $result = $self->{db}->search($cond, 0) ||          my $result = $self->{db}->search($cond, ( $args->{depth} || 0 )) ||
175                  $log->die("can't search for ", sub { Dumper( $args ) });                  $log->logdie("can't search for ", sub { Dumper( $args ) });
176    
177          my $hits = $result->doc_num;          my $hits = $result->doc_num;
178          $log->debug("found $hits hits for '$q'");          $log->debug("found $hits hits for '$q'");

Legend:
Removed from v.156  
changed lines
  Added in v.457

  ViewVC Help
Powered by ViewVC 1.1.26