/[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 103 by dpavlin, Tue Nov 22 16:11:48 2005 UTC revision 122 by dpavlin, Wed Nov 23 21:52:55 2005 UTC
# Line 13  WebPAC::Search::Estraier - search Hyper Line 13  WebPAC::Search::Estraier - search Hyper
13    
14  =head1 VERSION  =head1 VERSION
15    
16  Version 0.01  Version 0.02
17    
18  =cut  =cut
19    
20  our $VERSION = '0.01';  our $VERSION = '0.02';
21    
22  =head1 SYNOPSIS  =head1 SYNOPSIS
23    
# Line 100  sub new { Line 100  sub new {
100  Locate items in index  Locate items in index
101    
102    my @results = $est->search(    my @results = $est->search(
103          query => 'name of book or novel',          phrase => 'name of book or novel',
104          attr => qw/PersonalName TitleProper/,          add_attr => [
105                    "filepath ISTRINC $q",
106                    "size NUMGT 100",
107            ],
108            get_attr => qw/PersonalName TitleProper/,
109            order => 'NUMD',
110            max => 100,
111            options => $HyperEstraier::Condition::SURE,
112    );    );
113    
114    Options are close match to Hyper Estraier API, except C<get_attr> which defines
115    attributes which will be returned in hash for each record.
116    
117  Results are returned as hash array with keys named by attributes  Results are returned as hash array with keys named by attributes
118    
119  =cut  =cut
# Line 115  sub search { Line 125  sub search {
125    
126          my $log = $self->_get_logger;          my $log = $self->_get_logger;
127    
128          $self->confess('need db in object') unless ($self->{'db'});          $self->confess('need db in object') unless ($self->{db});
129          $self->confess('need attr') unless ($args->{'attr'});          $self->confess('need get_attr') unless ($args->{get_attr});
130    
131          $self->confess("need attr as array not " . ref($args->{'attr'}) ) unless (ref($args->{'attr'}) eq 'ARRAY');          $self->confess("need get_attr as array not " . ref($args->{get_attr}) ) unless (ref($args->{get_attr}) eq 'ARRAY');
132    
133          my $q = $args->{'query'};          my $q = $args->{phrase};
134    
135          my $cond = HyperEstraier::Condition->new();          my $cond = HyperEstraier::Condition->new();
136  #       $cond->add_attr("filepath ISTRINC $q");          if ( ref($args->{add_attr}) eq 'ARRAY' ) {
137                    $log->debug("adding search attributes: " . join(", ", @{ $args->{add_attr} }) );
138                    map {
139                            $cond->add_attr( $self->{iconv}->conver( $_ ) );
140                            $log->debug(" + $_");
141                    } $args->{add_attr};
142            }
143    
144          $cond->set_phrase( $self->{'iconv'}->convert( $q ) ) if ($q);          $cond->set_phrase( $self->{iconv}->convert($q) ) if ($q);
145          $cond->set_max( $args->{'max'} ) if ($args->{'max'});          $cond->set_max( $args->{max} ) if ($args->{max});
146  #       $cond->set_options( $HyperEstraier::Condition::SURE );          $cond->set_options( $args->{options} ) if ($args->{options});
147  #       $cond->set_order( 'NUMD' );          $cond->set_order( $args->{order} ) if ($args->{order});
148    
149          my $result = $self->{'db'}->search($cond, 0) ||          my $result = $self->{db}->search($cond, 0) ||
150                  $log->die("can't search for ", sub { Dumper( $args ) });                  $log->die("can't search for ", sub { Dumper( $args ) });
151    
152          my $hits = $result->doc_num;          my $hits = $result->doc_num;
# Line 149  sub search { Line 165  sub search {
165    
166                  my $hash;                  my $hash;
167    
168                  foreach my $attr (@{ $args->{'attr'} }) {                  foreach my $attr (@{ $args->{get_attr} }) {
169                          my $val = $doc->attr( $attr );                          my $val = $doc->attr( $attr );
170                          #$log->debug("attr $attr = ", $val || 'undef');                          #$log->debug("attr $attr = ", $val || 'undef');
171                          $hash->{$attr} = $self->{'iconv'}->convert( $val ) if (defined($val));                          $hash->{$attr} = $self->{iconv}->convert( $val ) if (defined($val));
172                  }                  }
173    
174                  if ($hash) {                  if ($hash) {

Legend:
Removed from v.103  
changed lines
  Added in v.122

  ViewVC Help
Powered by ViewVC 1.1.26