/[webpac2]/Webpacus2/lib/Webpacus/Action/Search.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 /Webpacus2/lib/Webpacus/Action/Search.pm

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

revision 930 by dpavlin, Wed Oct 31 10:34:38 2007 UTC revision 940 by dpavlin, Wed Oct 31 12:34:33 2007 UTC
# Line 11  package Webpacus::Action::Search; Line 11  package Webpacus::Action::Search;
11  use base qw/Webpacus::Action Jifty::Action/;  use base qw/Webpacus::Action Jifty::Action/;
12    
13  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
14    use Webpacus::Webpac;
15    use KinoSearch::Simple;
16    
17  use Jifty::Param::Schema;  use Jifty::Param::Schema;
18  use Jifty::Action schema {  use Jifty::Action schema {
19    
20  param f =>  param field =>
21          label is _("Field name"),          label is _("Field name"),
22          available are defer {          available are defer {
23                  my $coll = Webpacus::Model::SearchCollection->new;                  my $coll = Webpacus::Model::SearchCollection->new;
# Line 28  param f => Line 30  param f =>
30          },          },
31          render as 'Select';          render as 'Select';
32    
33  param q =>  param query =>
34          label is _("Search for"),          label is _("Search for"),
35          is mandatory;          is mandatory;
36                    
# Line 45  sub sticky_on_failure { 1 } Line 47  sub sticky_on_failure { 1 }
47  sub take_action {  sub take_action {
48          my $self = shift;          my $self = shift;
49    
50          my $search = Perly::Model::Search->load( $self->argument_value( 'search' ) );          my $search = Webpacus::Model::Search->load( $self->argument_value( 'field' ) );
51            my $query = $self->argument_value( 'query' );
52    
53          warn "## search = ",dump( $search );          warn "## search = ",dump( $search );
54    
55          my $message = _('Results for query') . $self->argument_value( 'q' ) . _('on field') . $self->argument_value( 'v' );          my $index_path = Webpacus::Webpac->index_path;
56    
57            warn "## index_path = $index_path";
58    
59            my $index = KinoSearch::Simple->new(
60                    path => $index_path,
61                    language => 'en',
62            );
63    
64            my $total_hits = $index->search(
65                    query      => $query,
66                    offset     => 0,
67                    num_wanted => 100,
68            );
69    
70            my $message =
71                    _('Found') . " $total_hits " .
72                    _('results for') . " '$query'";
73            
74            $message .= " " . _('on field') . ' ' . $search->name if $search->name;
75    
76            $self->result->content(
77                    results => Webpacus::Search::Results->new({
78                            count => $total_hits,
79                            index => $index,
80                    }),
81            );
82    
83          $self->result->message( $message );          $self->result->message( $message );
84            
85          return 1;          return 1;
86  }  }
87    
88    package Webpacus::Search::Results;
89    
90    use strict;
91    use warnings;
92    use base qw( Class::Accessor );
93    __PACKAGE__->mk_accessors( qw(
94            count
95            index
96    ) );
97    
98    use Data::Dump qw/dump/;
99    
100    sub next {
101            my $self = shift;
102            my $row = $self->index->fetch_hit_hashref;
103    
104            warn "## next row = ", dump( $row );
105    
106            return $row;
107    }
108    
109  1;  1;
110    

Legend:
Removed from v.930  
changed lines
  Added in v.940

  ViewVC Help
Powered by ViewVC 1.1.26