.\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Plucene 3pm" .TH Plucene 3pm "2018-04-02" "perl v5.26.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Plucene \- A Perl port of the Lucene search engine .SH "SYNOPSIS" .IX Header "SYNOPSIS" .SS "Create Documents by adding Fields:" .IX Subsection "Create Documents by adding Fields:" .Vb 3 \& my $doc = Plucene::Document\->new; \& $doc\->add(Plucene::Document::Field\->Text(content => $content)); \& $doc\->add(Plucene::Document::Field\->Text(author => "Your Name")); .Ve .SS "Choose Your Analyser and add documents to an Index Writer" .IX Subsection "Choose Your Analyser and add documents to an Index Writer" .Vb 2 \& my $analyzer = Plucene::Analysis::SimpleAnalyzer\->new(); \& my $writer = Plucene::Index::Writer\->new("my_index", $analyzer, 1); \& \& $writer\->add_document($doc); \& undef $writer; # close .Ve .PP \fISearch by building a Query\fR .IX Subsection "Search by building a Query" .PP .Vb 5 \& my $parser = Plucene::QueryParser\->new({ \& analyzer => Plucene::Analysis::SimpleAnalyzer\->new(), \& default => "text" # Default field for non\-specified queries \& }); \& my $query = $parser\->parse(\*(Aqauthor:"Your Name"\*(Aq); .Ve .PP \fIThen pass the Query to an IndexSearcher and collect hits\fR .IX Subsection "Then pass the Query to an IndexSearcher and collect hits" .PP .Vb 1 \& my $searcher = Plucene::Search::IndexSearcher\->new("my_index"); \& \& my @docs; \& my $hc = Plucene::Search::HitCollector\->new(collect => sub { \& my ($self, $doc, $score) = @_; \& push @docs, $searcher\->doc($doc); \& }); \& \& $searcher\->search_hc($query => $hc); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Plucene is a fully-featured and highly customizable search engine toolkit based on the Lucene \s-1API.\s0 () .PP 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 for one example of tying it all together. .PP The tests shipped with Plucene provide a variety of other examples of how use this. .SH "EXTENSIONS" .IX Header "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 \s-1CPAN\s0 (which is encouraged!) should place them in the namespace Plucene::Plugin::Analyzer::. .SH "DOCUMENTATION" .IX Header "DOCUMENTATION" Although most of the Perl modules should be well documented, the Perl \s-1API\s0 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 and . These are brilliant introductions to the concepts surrounding Lucene, how it works, and how to extend it. .SH "COMPATIBILITY" .IX Header "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. .PP 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. .SH "MISSING FEATURES" .IX Header "MISSING FEATURES" The following features have not yet been fully implemented: .IP "\(bu" 4 Wildcard searches .IP "\(bu" 4 Range searches .SH "MAILING LIST" .IX Header "MAILING LIST" Bug reports, patches, queries, discussion etc should be addressed to the mailing list. More information on the list can be found at: .PP .SH "AUTHORS" .IX Header "AUTHORS" Initially ported by Simon Cozens and Marc Kerr. .PP Currently maintained by Tony Bowden and Marty Pauley. .PP Original Java Lucene by Doug Cutting and others. .SH "THANKS" .IX Header "THANKS" The initial development and ongoing maintenance of Plucene has been funded and supported by Kasei .SH "LICENSE" .IX Header "LICENSE" This software is licensed under the same terms as Perl itself.