NAME
Search::Tools - high-performance tools for building search applications
SYNOPSIS
use Search::Tools;
my $string = 'the quik brown fox';
my $qparser = Search::Tools->parser();
my $query = $qparser->parse($string);
my $snipper = Search::Tools->snipper(query => $query);
my $hiliter = Search::Tools->hiliter(query => $query);
my $spellcheck = Search::Tools->spellcheck(query_parser => $qparser);
my $suggestions = $spellcheck->suggest($string);
for my $s (@$suggestions) {
if (! $s->{suggestions}) {
# $s->{word} was spelled correctly
}
elsif (@{ $s->{suggestions} }) {
printf "Did you mean: %s\n", join(' or ', @{$s->{suggestions}}));
}
}
for my $result (@search_results) {
print $hiliter->light( $snipper->snip( $result->summary ) );
}
DESCRIPTION
As of version 1.000 Search::Tools uses Moo and Class::XSAccessor.
Search::Tools is a set of utilities for building search applications. Rather than adhering to a particular search application or framework, the goal of Search::Tools is to provide general-purpose methods for common search application features. Think of Search::Tools like a toolbox rather than a hammer.
Examples include:
Parsing search queries for the meaningful terms
Rich regular expressions for locating terms in the original indexed documents
Contextual snippets showing query terms
Highlighting of terms in context
Spell check terms and suggestions of alternate spellings.
Search::Tools is derived from some of the features in HTML::HiLiter and SWISH::HiLiter, but has been re-written with an eye to accomodating more general purpose features.
METHODS
parser( args )
Returns a Search::Tools::Parser object, passing args to new().
regexp
Deprecated. Use parser() instead.
hiliter( args )
Returns a Search::Tools::HiLiter object, passing args to new().
snipper( args )
Returns a Search::Tools::Snipper object, passing args to new().
transliterate( str )
Same as:
Search::Tools::Transliterate->new()->convert( $str )
spellcheck( args )
Returns a Search::Tools::SpellCheck object, passing args to new().
slurp( filename )
Reads contents of filename into a scalar variable. Similar to File::Slurp, but will handle compressed files (.gz or .bz2) transparently using IO::Uncompress.
FUNCTIONS
describe( object )
XS debugging help. Same as using Devel::Peek.
REQUIREMENTS
Perl 5.8.3 or later is required. This is for full UTF-8 support.
The following non-core CPAN modules are required:
The following CPAN modules are recommended for the full set of features and for performance.
See also the specific module documentation for individual requirements.
HISTORY
The public API has changed as of version 0.24. The following classes are now removed:
Search::Tools::Keywords
Search::Tools::RegExp
Search::Tools::RegExp::Keywords
Search::Tools::RegExp::Keyword
The following Search::Tools method is deprecated:
regexp()
The following classes are new as of version 0.24:
Search::Tools::HeatMap
Search::Tools::Query
Search::Tools::QueryParser
Search::Tools::RegEx
Search::Tools::Token
Search::Tools::TokenList
Search::Tools::TokenListPP
Search::Tools::TokenListUtils
Search::Tools::TokenPP
Search::Tools::Tokenizer
EXAMPLES
See the tests in t/ and the example scripts in example/.
AUTHOR
Peter Karman <karman@cpan.org>
ACKNOWLEDGMENTS
The original idea and regular expression builder comes from HTML::HiLiter by the same author, copyright 2004 by Cray Inc.
Thanks to Atomic Learning www.atomiclearning.com
for sponsoring the development of some of these modules.
BUGS
Please report any bugs or feature requests to bug-search-tools at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Search-Tools. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Search::Tools
You can also look for information at:
RT: CPAN's request tracker
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
COPYRIGHT
Copyright 2006-2009, 2014 by Peter Karman.
This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO
HTML::HiLiter, SWISH::HiLiter, Moo, Class::XSAccessor, Text::Aspell