Eric Bohlman > Text-Query-0.07 > Text::Query::ParseAdvanced

Download:
Text-Query-0.07.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  3
View Bugs
Report a bug
Source  

NAME ^

Text::Query::ParseAdvanced - Parse AltaVista advanced query syntax

SYNOPSIS ^

  use Text::Query;
  my $q=new Text::Query('hello and world',
                        -parse => 'Text::Query::ParseAdvanced',
                        -solve => 'Text::Query::SolveAdvancedString',
                        -build => 'Text::Query::BuildAdvancedString');

DESCRIPTION ^

This module provides an object that parses a string containing a Boolean query expression similar to an AltaVista "advanced query".

It's base class is Text::Query::Parse;

Query expressions consist of literal strings (or regexps) joined by the following operators, in order of precedence from lowest to highest:

OR, |
AND, &
NEAR, ~
NOT, !

Operator names are not case-sensitive. Note that if you want to use a | in a regexp, you need to backwhack it to keep it from being seen as a query operator. Sub-expressions may be quoted in single or double quotes to match "and," "or," or "not" literally and may be grouped in parentheses ((, )) to alter the precedence of evaluation.

A parenthesized sub-expression may also be concatenated with other sub- expressions to match sequences: (Perl or Python) interpreter would match either "Perl interpreter" or "Python interpreter". Concatenation has a precedence higher than NOT but lower than AND. Juxtaposition of simple words has the highest precedence of all.

OPTIONS ^

These are the additional options of the prepare method and the constructor.

-near defaults to 10

Sets the number of words that can occur between two expressions and still satisfy the NEAR operator.

-operators defaults to and, or, not, near

Sets the operator names. The argument of the option is a pointer to a hash table mapping the default names to desired names. For instance:

    {
        'or' => 'ou',
        'and' => 'et',
        'near' => 'proche',
        'not' => 'non',
    }
-scope_map default to {}

Map the scope names to other names. If a scope is specified as scope: search the map for an entry whose key is scope and replace scope with the scalar found. For instance:

     {
         'scope' => 'otherscope'
     }

SEE ALSO ^

Text::Query(3) Text::Query::Parse(3)

AUTHORS ^

Eric Bohlman (ebohlman@netcom.com)

Loic Dachary (loic@senga.org)