NAME

Search::Query::Dialect - abstract base class for query language dialects

SYNOPSIS

 my $query = Search::Query->parser->parse('foo');
 print $query;

DESCRIPTION

Search::Query::Dialect is the base class from which all query dialects inherit.

A Dialect subclass must implement at least two methods:

stringify

Returns the serialized query tree.

stringify_clause( leaf )

Returns one clause of a serialized query tree.

See Search::Query::Dialect::Native for a working example.

METHODS

debug

Get/set flag.

default_field

Standard attribute accessor. Default value is undef.

init

DEPRECATED. Use BUILD() instead.

stringify

All subclasses must override this method. The default behavior is to croak.

tree

Returns the query Dialect instance as a hashref structure, similar to that of Search::QueryParser.

walk( CODE )

Traverse a Dialect object, calling CODE on each Clause. The CODE reference should expect 4 arguments:

  • The Clause object.

  • The Dialect object.

  • The CODE reference.

  • The prefix ("+", "-", and "") for the Clause.

translate_to( dialect )

Translate from one Dialect to another. Returns an object blessed into the dialect class.

add_or_clause( clause )

Add clause as an "or" leaf to the Dialect object.

add_and_clause( clause )

Add clause as an "and" leaf to the Dialect object.

add_not_clause( clause )

Add clause as a "not" leaf to the Dialect object.

add_sub_clause( clause )

Add clause as a sub clause to the Dialect object. In this case, clause should also be a Dialect object.

field_class

Should return the name of the Field class associated with the Dialect. Default is 'Search::Query::Field'.

get_default_field

Returns the default field for this Dialect.

get_field( field_name )

Returns a Field object instance for field_name. The object will be an instance of field_class.

This is a shorthand wrapper around the method of the same name in the internal parser object.

preprocess( query_string )

Called by Parser in parse() before actually building the Dialect object from query_string.

This allows for any "cleaning up" or other munging of query_string to support the official Parser syntax.

The default just returns query_string untouched. Subclasses should return a parseable string.

parser

Returns the Search::Query::Parser object that generated the Dialect object.

AUTHOR

Peter Karman, <karman at cpan.org>

BUGS

Please report any bugs or feature requests to bug-search-query at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Search-Query. 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::Query

You can also look for information at:

COPYRIGHT & LICENSE

Copyright 2010 Peter Karman.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.