# phpman > perldoc > Plucene

## NAME
    Plucene - A Perl port of the Lucene search engine

## SYNOPSIS
### Create Documents by adding Fields:
            my $doc = [Plucene::Document](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3ADocument/markdown)->new;
            $doc->add([Plucene::Document::Field](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3ADocument%3A%3AField/markdown)->Text(content => $content));
            $doc->add([Plucene::Document::Field](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3ADocument%3A%3AField/markdown)->Text(author => "Your Name"));

### Choose Your Analyser and add documents to an Index Writer
            my $analyzer = [Plucene::Analysis::SimpleAnalyzer](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3AAnalysis%3A%3ASimpleAnalyzer/markdown)->new();
            my $writer = [Plucene::Index::Writer](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3AIndex%3A%3AWriter/markdown)->new("my_index", $analyzer, 1);

            $writer->add_document($doc);
            undef $writer; # close

   Search by building a Query
            my $parser = [Plucene::QueryParser](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3AQueryParser/markdown)->new({
                    analyzer => [Plucene::Analysis::SimpleAnalyzer](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3AAnalysis%3A%3ASimpleAnalyzer/markdown)->new(),
                    default  => "text" # Default field for non-specified queries
            });
            my $query = $parser->parse('author:"Your Name"');

   Then pass the Query to an IndexSearcher and collect hits
            my $searcher = [Plucene::Search::IndexSearcher](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3ASearch%3A%3AIndexSearcher/markdown)->new("my_index");

            my @docs;
            my $hc = [Plucene::Search::HitCollector](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3ASearch%3A%3AHitCollector/markdown)->new(collect => sub {
                    my ($self, $doc, $score) = @_;
                    push @docs, $searcher->doc($doc);
            });

            $searcher->search_hc($query => $hc);

## DESCRIPTION
    Plucene is a fully-featured and highly customizable search engine toolkit based on the Lucene
    API. (<<http://jakarta.apache.org/lucene>>)

    It is not, in and of itself, a functional search engine - you are expected to subclass and tie
    all the pieces together to suit your own needs. The synopsis above gives a rough indication of
    how to use the engine in simple cases. See [Plucene::Simple](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3ASimple/markdown) for one example of tying it all
    together.

    The tests shipped with Plucene provide a variety of other examples of how use this.

## EXTENSIONS
    Plucene comes shipped with some default Analyzers. However it is expected that users will want
    to create Analyzers to meet their own needs. To avoid namespace corruption, anyone releasing
    such Analyzers to CPAN (which is encouraged!) should place them in the namespace
    [Plucene::Plugin::Analyzer](https://www.chedong.com/phpMan.php/perldoc/Plucene%3A%3APlugin%3A%3AAnalyzer/markdown)::.

## DOCUMENTATION
    Although most of the Perl modules should be well documented, the Perl API mirrors Lucene's to
    such an extent that reading Lucene's documentation will give you a good idea of how to do more
    advanced stuff with Plucene. See particularly the ONJava articles
    <<http://www.onjava.com/pub/a/onjava/2003/01/15/lucene.html>> and
    <<http://www.onjava.com/pub/a/onjava/2003/03/05/lucene.html>>. These are brilliant introductions
    to the concepts surrounding Lucene, how it works, and how to extend it.

## COMPATIBILITY
    For the most part Lucene and Plucene indexes are created in the same manner. However, due to
    current implementation details, the indexes will generally not be compatible. It should
    theoretically be possible to convert index files in either direction between Plucene and Lucene,
    but no tools are currently provided to do so.

    As Plucene is still undergoing development, we cannot guarantee index format compatibility
    across releases. If you're using Plucene in production code, you need to ensure that you can
    recreate the indexes.

## MISSING FEATURES
    The following features have not yet been fully implemented:

    *   Wildcard searches

    *   Range searches

## MAILING LIST
    Bug reports, patches, queries, discussion etc should be addressed to the mailing list. More
    information on the list can be found at:

    <<http://www.kasei.com/mailman/listinfo/plucene>>

## AUTHORS
    Initially ported by Simon Cozens and Marc Kerr.

    Currently maintained by Tony Bowden and Marty Pauley.

    Original Java Lucene by Doug Cutting and others.

## THANKS
    The initial development and ongoing maintenance of Plucene has been funded and supported by
    Kasei <<http://www.kasei.com/>>

## LICENSE
    This software is licensed under the same terms as Perl itself.

