NAME
Search::QueryParser::SQL - turn free-text queries into SQL WHERE clauses
SYNOPSIS
use Search::QueryParser::SQL;
my $parser = Search::QueryParser::SQL->new(
columns => [qw( first_name last_name email )]
);
my $query = $parser->parse('joe smith', 1); # 1 for explicit AND
print $query;
# prints:
# (first_name='joe' OR last_name='joe' OR email='joe') AND \
# (first_name='smith' OR last_name='smith' OR email='smith')
DESCRIPTION
Search::QueryParser::SQL is a subclass of Search::QueryParser. Chiefly it extends the unparse() method to stringify free-text search queries as valid SQL WHERE clauses.
The idea is to allow you to treat your database like a free-text search index, when it really isn't.
METHODS
Only new or overridden method are documented here.
new( args )
Returns a new Parser. In addition to the args documented in Search::QueryParser, this new() method supports additional args:
- columns
-
Required
May be a hash or array ref of column names. If a hash ref, the keys should be column names and the values the column type (e.g., int, varchar, etc.).
The values are used for determining correct quoting in strings. If passed as an array ref, all column arguments will be quoted (treated like strings).
- default_column
-
Optional
The column name or names to be used when no explicit column name is used in a query string. If not present, defaults to columns.
- quote_columns
-
Optional
The default behaviour is to not quote column names, but some SQL dialects expect column names to be quoted (escaped).
Set this arg to a quote value. Example:
my $parser = Search::QueryParser::SQL->new( columns => [qw( foo bar )], quote_columns => '`' ); # query will look like `foo` and `bar`
parse( string )
Acts like parse() method in Search::QueryParser, but returns a Search::QueryParser::SQL::Query object.
unparse( query )
Same as calling $query->stringify.
AUTHOR
Peter Karman, <karman@cpan.org>
BUGS
Please report any bugs or feature requests to bug-search-queryparser-sql@rt.cpan.org
, or through the web interface at http://rt.cpan.org. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
ACKNOWLEDGEMENTS
The Minnesota Supercomputing Institute http://www.msi.umn.edu/
sponsored the development of this software.
COPYRIGHT & LICENSE
Copyright 2008 by the Regents of the University of Minnesota.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.