NAME
Text::Query::BuildSQL - Base class for SQL query builders
SYNOPSIS
package Text::Query::BuildSQLsqldb;
use Text::Query::BuildSQL;
use vars qw(@ISA);
@ISA = qw(Text::Query::BuildSQL);
DESCRIPTION
Defines all the build_*
functions to build a syntax tree. The tree nodes are [ operator scope operand operand... ]. The build_final_expression
function translate the syntax tree in a where
clause using the resolve
method. If the scope of the search is not specified (simple query or advanced query without scope operator), the scope is set to the list of comma separated fields provided by the -fields_searched
option. The resulting where
clause is placed in the select
order provided with the -select
option, if any.
SYNTAX TREE
The string enclosed in single quotes must match exactly. The <string> token stands for an arbitrary string. A description enclosed in [something ...] means repeated 0 or N times.
expr: 'or' scope expr [expr ...]
'and' scope expr [expr ...]
'not' scope expr
'near' scope expr_literal expr_literal
'forbiden' scope expr_literal [expr_literal ...]
'mandatory' scope expr_literal [expr_literal ...]
'optional' scope expr_literal [expr_literal ...]
'literal' scope <string>
expr_literal: literal scope <string>
scope: <string>
METHODS
- resolve([], Q1)
-
Returns a
where
clause string corresponding to theQ1
syntax tree. - sortplusminus([], Q1)
-
Translate the
mandatory
andforbiden
syntactic nodes to their boolean equivalents. If ithas_relevance
returns false and there is at least onemandatory
word, the firstmandatory
word is added to the list ofoptional
words. - has_relevance()
-
Returns true if relevance ranking is possible, false if not. It is used by the
sortplusminus
function. Returns false by default.If relevance ranking is not possible, the semantic of the simple search is slighthly modified. When asking for
+a b c
it shows all the documents containinga
and (b
orc
).The normal behaviour is to return all the documents containing
a
and to sort them to show first those containing (b
orc
). When relevance ranking is not available theb
,c
search terms are therefore useless. That is why we decided to change the semantic of the query if no relevance ranking is available.
OPTIONS
- -select STRING
-
If provided the string returned by
build_final_expression
substitutes the__WHERE__
tag with thewhere
string generated by theresolve
function. The substituted string is the return value of thebuild_final_expression
.If not set the return value of the
build_final_expression
is the result of theresolve
function. - -fields_searched FIELDS_LIST
-
FIELDS_LIST
is a list of comma separated field names. It is used as the default scope if no scope is provided in the query string. Thebuild_final_expression
function willcroak
if this option is not provided and no scope operator were used.
SEE ALSO
Text::Query(3) Text::Query::Build(3)
AUTHORS
Loic Dachary (loic@senga.org)