package TestApp::C::Plucene; use strict; use base 'Catalyst::Base'; my $plucene = 'TestApp::M::Search::Plucene'; sub add : Local { my ( $self, $c, $key ) = @_; my $data = { $key => {}, }; foreach my $param ( $c->req->param ) { $data->{$key}->{$param} = $c->req->params->{$param}; } $plucene->add( $data ); $c->res->output( 'ok' ); } sub query_total_hits : Local { my ( $self, $c ) = @_; my $results = $plucene->query( $c->req->params->{q} ); my $total_hits = $results->get_total_hits; $c->res->output( $total_hits ); } sub query_items : Local { my ( $self, $c ) = @_; my $results = $plucene->query( $c->req->params->{q} ); my @items = $results->get_items; my $output; foreach my $item ( @items ) { $output .= 'score=' . $item->get_score . ' '; $output .= 'key=' . $item->get_key . ' '; } $c->res->output( $output ); } sub query_data : Local { my ( $self, $c ) = @_; my $results = $plucene->query( $c->req->params->{q} ); my @items = $results->get_items; my $output; foreach my $item ( @items ) { foreach my $field ( $item->get_fields ) { $output .= $field . '=' . $item->get($field) . ' '; } } $c->res->output( $output ); } sub is_indexed : Local { my ( $self, $c, $key ) = @_; $c->res->output( $plucene->is_indexed( $key ) || 'no results' ); } sub optimize : Local { my ( $self, $c ) = @_; $plucene->optimize; $c->res->output( 'ok' ); } 1;