Plucene(3pm)

πŸ“¦
version 1.25 Β· 2 versions
  • 1.25 Β· debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking (latest)
  • 1.25 Β· ubuntu jammy
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ’– Plucene πŸ’–

okay bestie, so this is the manual page for Plucene β€” a Perl port of the Lucene search engine ✨ yes, that Lucene. She's fully featured, she's highly customizable, and she's a whole toolkit, not a whole search engine. sit with me, we're gonna go through it together 🫢


✨ NAME ✨

Plucene β€” A Perl port of the Lucene search engine. that's the whole vibe. periodt πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

πŸ“ Create Documents by adding Fields:

my $doc = Plucene::Document->new;
$doc->add(Plucene::Document::Field->Text(content => $content));
$doc->add(Plucene::Document::Field->Text(author => "Your Name"));

🌸 Choose Your Analyser and add documents to an Index Writer

my $analyzer = Plucene::Analysis::SimpleAnalyzer->new();
my $writer = Plucene::Index::Writer->new("my_index", $analyzer, 1);

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

πŸ” Search by building a Query

my $parser = Plucene::QueryParser->new({
        analyzer => Plucene::Analysis::SimpleAnalyzer->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->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);

πŸ’œ DESCRIPTION πŸ’œ

Plucene is a fully-featured and highly customizable search engine toolkit based on the Lucene API. (http://jakarta.apache.org/lucene) πŸ”₯

okay but here's the thing β€” 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 🧚

the tests shipped with Plucene provide a variety of other examples of how use this πŸ’€ (yes, that's how the original says it, we're keeping it fr fr)


🌈 EXTENSIONS 🌈

Plucene comes shipped with some default Analyzers. however β€” and this is the fun part β€” 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:: πŸ‘‘

bestie. if you drop an Analyzer on CPAN, put it in Plucene::Plugin::Analyzer::. we do not corrupt namespaces in this house πŸ’…

πŸ“š 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 β€” and this is the part where we sit up straight β€” 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 🚨

no cap, this one matters. can't recreate your indexes? that's a you problem and it's giving production incident πŸ’€

πŸ’€ MISSING FEATURES πŸ’€

the following features have not yet been fully implemented:

  • Wildcard searches
  • Range searches

not me having a whole list of things she can't do yet πŸ™ˆ she's growing, okay?


πŸ“¬ 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/ ✨ iconic behaviour honestly


πŸ’– LICENSE πŸ’–

this software is licensed under the same terms as Perl itself.


and that's the whole page bestie, you ate it πŸ’… this was Plucene, man page section 3pm, from perl v5.36.0, dated 2022-12-04. go build something cute with it πŸŽ€β­πŸŒΈ

πŸ“¦ where this page comes from