# ***********************************************
# 
# !!!! DO NOT EDIT !!!!
# 
# This file was auto-generated by Build.PL.
# 
# ***********************************************
# 
# 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.

=encoding utf8

=head1 NAME

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

=head1 SYNOPSIS

    my $schema = Lucy::Plan::Schema->new;
    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer->new( 
        analyzers => \@analyzers,
    );
    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.

The language parameter is DEPRECATED. Use
L<EasyAnalyzer|Lucy::Analysis::EasyAnalyzer> instead.

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

    my $tokenizer    = Lucy::Analysis::StandardTokenizer->new;
    my $normalizer   = Lucy::Analysis::Normalizer->new;
    my $stemmer      = Lucy::Analysis::SnowballStemmer->new( language => 'en' );
    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer->new(
        analyzers => [ $tokenizer, $normalizer, $stemmer, ], );

Create a new PolyAnalyzer.

=over

=item *

B<language> - An ISO code from the list of supported languages.
DEPRECATED, use L<EasyAnalyzer|Lucy::Analysis::EasyAnalyzer> instead.

=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: tokenize, normalize,
stopalize, stem.

=back

=head1 METHODS

=head2 get_analyzers

    my $arrayref = $poly_analyzer->get_analyzers();

Getter for “analyzers” member.

=head2 transform

    my $inversion = $poly_analyzer->transform($inversion);

Take a single L<Inversion|Lucy::Analysis::Inversion> as input
and returns an Inversion, either the same one (presumably transformed
in some way), or a new one.

=over

=item *

B<inversion> - An inversion.

=back

=head1 INHERITANCE

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

=cut

