--- Webpacus2/lib/Webpacus/Action/Search.pm 2007/10/31 10:34:38 930 +++ Webpacus2/lib/Webpacus/Action/Search.pm 2007/10/31 12:34:33 940 @@ -11,11 +11,13 @@ use base qw/Webpacus::Action Jifty::Action/; use Data::Dump qw/dump/; +use Webpacus::Webpac; +use KinoSearch::Simple; use Jifty::Param::Schema; use Jifty::Action schema { -param f => +param field => label is _("Field name"), available are defer { my $coll = Webpacus::Model::SearchCollection->new; @@ -28,7 +30,7 @@ }, render as 'Select'; -param q => +param query => label is _("Search for"), is mandatory; @@ -45,16 +47,64 @@ sub take_action { my $self = shift; - my $search = Perly::Model::Search->load( $self->argument_value( 'search' ) ); + my $search = Webpacus::Model::Search->load( $self->argument_value( 'field' ) ); + my $query = $self->argument_value( 'query' ); warn "## search = ",dump( $search ); - my $message = _('Results for query') . $self->argument_value( 'q' ) . _('on field') . $self->argument_value( 'v' ); + my $index_path = Webpacus::Webpac->index_path; + + warn "## index_path = $index_path"; + + my $index = KinoSearch::Simple->new( + path => $index_path, + language => 'en', + ); + + my $total_hits = $index->search( + query => $query, + offset => 0, + num_wanted => 100, + ); + + my $message = + _('Found') . " $total_hits " . + _('results for') . " '$query'"; + + $message .= " " . _('on field') . ' ' . $search->name if $search->name; + + $self->result->content( + results => Webpacus::Search::Results->new({ + count => $total_hits, + index => $index, + }), + ); $self->result->message( $message ); return 1; } +package Webpacus::Search::Results; + +use strict; +use warnings; +use base qw( Class::Accessor ); +__PACKAGE__->mk_accessors( qw( + count + index +) ); + +use Data::Dump qw/dump/; + +sub next { + my $self = shift; + my $row = $self->index->fetch_hit_hashref; + + warn "## next row = ", dump( $row ); + + return $row; +} + 1;