package KinoSearch::Analysis::PolyAnalyzer; use KinoSearch::Util::ToolSet; use base qw( KinoSearch::Analysis::Analyzer ); use KinoSearch::Analysis::LCNormalizer; use KinoSearch::Analysis::Tokenizer; use KinoSearch::Analysis::Stemmer; our %instance_vars = __PACKAGE__->init_instance_vars( analyzers => undef, ); sub init_instance { my $self = shift; my $language = $self->{language} = lc( $self->{language} ); if ( !defined $self->{analyzers} ) { croak("Must specify either 'language' or 'analyzers'") unless $language; $self->{analyzers} = [ KinoSearch::Analysis::LCNormalizer->new( language => $language ), KinoSearch::Analysis::Tokenizer->new( language => $language ), KinoSearch::Analysis::Stemmer->new( language => $language ), ]; } } sub analyze { my ( $self, $field ) = @_; $_->analyze($field) for @{ $self->{analyzers} }; } 1;