/[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 80 by dpavlin, Mon Nov 21 14:42:16 2005 UTC revision 81 by dpavlin, Mon Nov 21 14:42:22 2005 UTC
# Line 35  Connect to Hyper Estraier index using HT Line 35  Connect to Hyper Estraier index using HT
35          user => 'admin',          user => 'admin',
36          passwd => 'admin',          passwd => 'admin',
37          encoding => 'iso-8859-2',          encoding => 'iso-8859-2',
38          log => $Log::Log4Perl->log_object,          log => $Log::Log4perl->log_object,
39   );   );
40    
41  Options are:  Options are:
# Line 60  character encoding of C<data_structure> Line 60  character encoding of C<data_structure>
60  (and it probably is). This encoding will be converted to C<UTF-8> for  (and it probably is). This encoding will be converted to C<UTF-8> for
61  Hyper Estraier.  Hyper Estraier.
62    
63    =item log
64    
65    L<Log::Log4perl> object or equivalent (C<< $c->log >> can be used in
66    L<Catalyst> and there is support for it).
67    
68  =back  =back
69    
70  =cut  =cut
# Line 83  sub new { Line 88  sub new {
88          my $encoding = $self->{'encoding'} || 'ISO-8859-2';          my $encoding = $self->{'encoding'} || 'ISO-8859-2';
89          $log->info("using encoding $encoding");          $log->info("using encoding $encoding");
90    
91          $self->{'iconv'} = new Text::Iconv($encoding, 'UTF-8') or          $self->{'iconv'} = new Text::Iconv('UTF-8', $encoding) or
92                  $log->die("can't create conversion from $encoding to UTF-8");                  $log->die("can't create conversion from UTF-8 to $encoding");
93    
94          $self ? return $self : return undef;          $self ? return $self : return undef;
95  }  }
# Line 94  sub new { Line 99  sub new {
99    
100  Locate items in index  Locate items in index
101    
102    $est->search(    my @results = $est->search(
103          query => 'name of book or novel',          query => 'name of book or novel',
104          attr => [ qw/PersonalName Title/ ],          attr => qw/PersonalName TitleProper/,
105    );    );
106    
107    Results are returned as hash array with keys named by attributes
108    
109  =cut  =cut
110    
111  sub search {  sub search {
# Line 110  sub search { Line 117  sub search {
117    
118          $log->logconfess('need db in object') unless ($self->{'db'});          $log->logconfess('need db in object') unless ($self->{'db'});
119          $log->logconfess('need attr') unless ($args->{'attr'});          $log->logconfess('need attr') unless ($args->{'attr'});
         $log->logconfess("need attr as array not " . ref($args->{'attr'}) ) unless (ref($args->{'attr'}) eq 'ARRAY');  
120    
121  #       my $database = $self->{'database'} || $log->logconfess('no database in $self');          $log->logconfess("need attr as array not " . ref($args->{'attr'}) ) unless (ref($args->{'attr'}) eq 'ARRAY');
 #       foreach my $p (qw/id ds type/) {  
 #               $log->logconfess("need $p") unless ($args->{$p});  
 #       }  
122    
123          my $cond = HyperEstraier::Condition->new();          my $cond = HyperEstraier::Condition->new();
124  #       $cond->add_attr("filepath ISTRINC $q");  #       $cond->add_attr("filepath ISTRINC $q");
# Line 131  sub search { Line 134  sub search {
134          my $hits = $result->doc_num;          my $hits = $result->doc_num;
135          $log->debug("found $hits hits");          $log->debug("found $hits hits");
136    
         my @attrs = $args->{'attr'} || $self->confess("need attr");  
   
137          my @results;          my @results;
138    
139          for my $i ( 0 .. $hits ) {          for my $i ( 0 .. ( $hits - 1 ) ) {
140    
141                  $log->debug("get_doc($i)");                  $log->debug("get_doc($i)");
142                  my $doc = $result->get_doc( $i );                  my $doc = $result->get_doc( $i );
# Line 146  sub search { Line 147  sub search {
147    
148                  my $hash;                  my $hash;
149    
150                  foreach my $attr (@attrs) {                  foreach my $attr (@{ $args->{'attr'} }) {
151                          my $val = $doc->attr( $attr );                          my $val = $doc->attr( $attr );
152                          $log->debug("attr $attr = ", $val || 'undef');                          $log->debug("attr $attr = ", $val || 'undef');
153                          $hash->{$attr} = $val if (defined($val));                          $hash->{$attr} = $self->{'iconv'}->convert( $val ) if (defined($val));
154                  }                  }
155    
156                  if ($hash) {                  if ($hash) {

Legend:
Removed from v.80  
changed lines
  Added in v.81

  ViewVC Help
Powered by ViewVC 1.1.26