NAME
Search::Xapian - Perl XS frontend to the Xapian C++ search library.
SYNOPSIS
use Search::Xapian;
my $db = Search::Xapian::Database->new( '[DATABASE DIR]' );
my $enq = $db->enquire( '[QUERY TERM]' );
printf "Parsing query '%s'\n", $enq->get_query()->get_description();
my @matches = $enq->matches(0, 10);
print scalar(@matches) . " results found\n";
foreach my $match ( @matches ) {
my $doc = $match->get_document();
printf "ID %d %d%% [ %s ]\n", $match->get_docid(), $match->get_percent(), $doc->get_data();
}
DESCRIPTION
This module wraps most methods of most Xapian classes. The missing classes and methods should be added in the future. It also provides a more simplified, 'perlish' interface - as demonstrated above.
The Xapian library is evolving very quickly at the time of writing, hence any documentation placed here would be likely to become out of date quite rapidly, and I do not have the patience to write some which could rapidly become redundant.
Apologies to those of you considering using this module. For the time being, I would suggest garnering what you can from the tests and examples provided, or reading through the Xapian documentation on http://www.xapian.org/, notably the API documentation at http://www.xapian.org/docs/apidoc/html/annotated.html
If you encounter problems, email either me or preferably the Xapian-discuss mailing list (which I am on - subscription details can be found on the Xapian web site).
EXPORT
None by default.
TODO
- Error Handling
-
Error handling for all methods liable to generate them.
- Documentation
-
Brief descriptions of classes, possibly just adapted for Xapian docs.
- Unwrapped classes
-
The following Xapian classes are not yet wrapped: Error (and subclasses), ErrorHandler, ExpandDecider (and subclasses), MatchDecider, Weight (and subclasses).
- Unwrapped methods
-
The following methods are not yet wrapped: Enquire::get_eset(...) with more than two arguments, Enquire::get_mset(...) with more than two arguments, Enquire::register_match_decoder(...) with one argument, Enquire::set_weighting_scheme(const Weight &weight); Query::Query(tname, ...); with more than one argument; QueryParser::set_stemming_options() with third (Stopper) argument; RSet::add_document(const Xapian::MSetIterator & i), RSet::remove_document(const Xapian::MSetIterator & i), RSet::contains(const Xapian::MSetIterator & i) (these are very similar to wrapping of get_matching_terms_begin and _end in Xapian/Enquire.pm).
CREDITS
Thanks to Tye McQueen <tye@metronet.com> for explaining the finer points of how best to write XS frontends to C++ libraries, James Aylett <james@tartarus.org> for clarifying the less obvious aspects of the Xapian API, and especially Olly Betts <olly@survex.com> for contributing advice, bugfixes, and wrapper code for the more obscure classes.
AUTHOR
Alex Bowley <kilinrax@cpan.org>
SEE ALSO
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 161:
You forgot a '=back' before '=head1'