# Auto-generated file -- DO NOT EDIT!!!!!

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

=head1 NAME

Lucy::Analysis::PolyAnalyzer - Multiple Analyzers in series.

=head1 SYNOPSIS

    my $schema = Lucy::Plan::Schema->new;
    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer->new( 
        language => 'en',
    );
    my $type = Lucy::Plan::FullTextType->new(
        analyzer => $polyanalyzer,
    );
    $schema->spec_field( name => 'title',   type => $type );
    $schema->spec_field( name => 'content', type => $type );



=head1 DESCRIPTION

A PolyAnalyzer is a series of L<Analyzers|Lucy::Analysis::Analyzer>,
each of which will be called upon to "analyze" text in turn.  You can
either provide the Analyzers yourself, or you can specify a supported
language, in which case a PolyAnalyzer consisting of a
L<CaseFolder|Lucy::Analysis::CaseFolder>, a
L<RegexTokenizer|Lucy::Analysis::RegexTokenizer>, and a
L<SnowballStemmer|Lucy::Analysis::SnowballStemmer> will be generated for you.

Supported languages:

    en => English,
    da => Danish,
    de => German,
    es => Spanish,
    fi => Finnish,
    fr => French,
    hu => Hungarian,
    it => Italian,
    nl => Dutch,
    no => Norwegian,
    pt => Portuguese,
    ro => Romanian,
    ru => Russian,
    sv => Swedish,
    tr => Turkish,

=head1 CONSTRUCTORS

=head2 new( I<[labeled params]> )

    my $analyzer = Lucy::Analysis::PolyAnalyzer->new(
        language  => 'es',
    );
    
    # or...

    my $case_folder  = Lucy::Analysis::CaseFolder->new;
    my $tokenizer    = Lucy::Analysis::RegexTokenizer->new;
    my $stemmer      = Lucy::Analysis::SnowballStemmer->new( language => 'en' );
    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer->new(
        analyzers => [ $case_folder, $whitespace_tokenizer, $stemmer, ], );

=over

=item *

B<language> - An ISO code from the list of supported languages.

=item *

B<analyzers> - An array of Analyzers.  The order of the analyzers
matters.  Don't put a SnowballStemmer before a RegexTokenizer (can't stem whole
documents or paragraphs -- just individual words), or a SnowballStopFilter
after a SnowballStemmer (stemmed words, e.g. "themselv", will not appear in a
stoplist).  In general, the sequence should be: normalize, tokenize,
stopalize, stem.

=back





=head1 METHODS

=head2 get_analyzers()

Getter for "analyzers" member.



=head1 INHERITANCE

Lucy::Analysis::PolyAnalyzer isa L<Lucy::Analysis::Analyzer> isa L<Lucy::Object::Obj>.


=cut

