Changeset 1545
- Timestamp:
- 08/20/06 22:53:44
- Files:
-
- trunk/plagger/lib/Plagger/Plugin/Search/Rast.pm (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/lib/Plagger/Plugin/Search/Rast.pm
r131 r1545 3 3 use base qw( Plagger::Plugin ); 4 4 5 use Encode ;5 use Encode (); 6 6 use POSIX; 7 7 use Rast; … … 11 11 $context->register_hook( 12 12 $self, 13 'publish.feed' => \&feed,13 'publish.feed' => \&feed, 14 14 'publish.finalize' => \&finalize, 15 'searcher.search' => \&search, 15 16 ); 16 17 } … … 95 96 $feed->link, 96 97 $entry->permalink, 97 $self-> convert($entry->title) || '',98 $self-> convert($entry->author) || '',98 $self->encode($entry->title) || '', 99 $self->encode($entry->author) || '', 99 100 POSIX::strftime('%Y-%m-%dT%H:%M:%S', localtime($time)), 100 $self-> convert(join(' ', @{ $entry->tags }))101 $self->encode(join(' ', @{ $entry->tags })) 101 102 ]; 102 103 103 my $text = $self-> convert($entry->text);104 my $text = $self->encode($entry->text); 104 105 unless ($result->hit_count) { 105 106 my $id = $rast->register($text, $options); … … 113 114 } 114 115 115 sub convert{116 sub encode { 116 117 my ($self, $str) = @_; 117 118 utf8::decode($str) unless utf8::is_utf8($str); 118 return encode($self->{encode}, $str); 119 return Encode::encode($self->{encode}, $str); 120 } 121 122 sub decode { 123 my ($self, $str) = @_; 124 return Encode::decode($self->{encode}, $str); 119 125 } 120 126 … … 123 129 return unless $self->{rast}; 124 130 $self->{rast}->close; 131 } 132 133 sub search { 134 my($self, $context, $args) = @_; 135 136 my $result = $self->{rast}->search($self->encode($args->{query}), { 137 need_summary => 1, 138 properties => [qw/feedlink permalink title author/], 139 }); 140 141 my $feed = Plagger::Feed->new; 142 $feed->type('search:Rast'); 143 $feed->title("Search: $args->{query}"); 144 145 while (my $row = $result->fetch) { 146 my $entry = Plagger::Entry->new; 147 148 $entry->link($row->{properties}->[0]); 149 $entry->permalink($row->{properties}->[1]); 150 $entry->title($self->decode($row->{properties}->[2])); 151 $entry->author($self->decode($row->{properties}->[3])) ; 152 $entry->body($self->decode($row->{summary})); 153 $feed->add_entry($entry); 154 } 155 156 return $feed; 125 157 } 126 158
