--- lib/Grep/Search.pm 2007/03/07 19:43:09 108 +++ lib/Grep/Search.pm 2007/03/14 18:46:37 109 @@ -2,67 +2,56 @@ use strict; use warnings; -use base 'Jifty::Object'; +use base qw( Class::Accessor Jifty::Object ); +Grep::Search->mk_accessors( qw( analyzer store writer create index_path ) ); use Data::Dump qw/dump/; use Lucene; use Jifty::Util; -my $index_path = Jifty::Util->app_root . '/var/lucene'; +my $debug = 0; -my ( $analyzer, $store, $writer ); +=head1 NAME -my $debug = 0; -my $create; +Grep::Search - full text search -sub create { - my $self = shift; +=head1 METHODS - if (defined( $create )) { - $self->log->debug("using previous create $create"); - return $create; - } +=head2 new + + my $search = Grep::Search->new(); + +=cut + +sub new { + my $class = shift; + my $self = $class->SUPER::new(@_); + + my $index_path = Jifty::Util->app_root . '/var/lucene'; + + $self->index_path( $index_path ); if (! -e "$index_path/segments") { - $create = 1; - $self->log->debug("create index $index_path"); + $self->create( 1 ); + $self->log->debug("Creating new index $index_path"); } else { - $create = 0; - $self->log->debug("open index: $index_path"); + $self->create( 0 ); + $self->log->debug("Opening index: $index_path"); } - return $create; -} -sub analyzer { - my $self = shift; - if (! defined( $analyzer )) { - $analyzer = new Lucene::Analysis::Standard::StandardAnalyzer(); - $self->log->debug("$analyzer created"); - } - return $analyzer; -} + $self->analyzer( new Lucene::Analysis::Standard::StandardAnalyzer() ); + $self->log->debug($self->analyzer . " created"); -sub store { - my $self = shift; - if (! defined( $store )) { - $store = Lucene::Store::FSDirectory->getDirectory( $index_path, $self->create ); - $self->log->debug("$store created"); - } - return $store; -} + $self->store( Lucene::Store::FSDirectory->getDirectory( $index_path, $self->create ) ); + $self->log->debug($self->store, " created"); -sub writer { - my $self = shift; - if (! defined( $writer )) { - $writer = new Lucene::Index::IndexWriter( $self->store, $self->analyzer, $self->create ); - $self->log->debug("$writer created"); - } - return $writer; + return $self; } + =head2 add - Grep::Search->add( $record, $owner_id ); + $search->add( $record, $owner_id ); =cut @@ -125,14 +114,19 @@ $uid ||= Jifty->web->current_user->id; $doc->add(Lucene::Document::Field->Keyword( '_owner_id', $uid )); + if (! defined( $self->writer )) { + $self->writer( new Lucene::Index::IndexWriter( $self->store, $self->analyzer, $self->create ) ); + $self->log->debug($self->writer, " created"); + } + $self->writer->addDocument($doc); $self->log->debug("added ", $i->id, " for user $uid to index"); } -=head2 +=head2 collection - my $ItemCollection = Grep::Search->collection( 'search query' ); + my $ItemCollection = $search->collection( 'search query' ); =cut @@ -195,20 +189,21 @@ =head2 finish - Grep::Search->finish + $search->finish =cut sub finish { my $self = shift; - if ($writer) { + if ($self->writer) { $self->log->debug("closing index"); - $writer->close; + $self->writer->close; } - undef $writer; - undef $store; - undef $create; - undef $analyzer; + +# $self->writer( undef ); +# $self->store( undef ); +# $self->create( undef ); +# $self->analyzer( undef ); return; } @@ -232,7 +227,6 @@ my $short = $self->snippet( 50, $text ); - =cut sub snippet {