internal package Foswiki::Query::QueryAlgorithms
On this page:
- internal package Foswiki::Query::QueryAlgorithms
- StaticMethod query( $query, $web, $inputTopicSet, $session, $options ) → $infoCache
- StaticMethod getField($class, $node, $data, $field ) → $result
- StaticMethod getRefTopic($class, $relativeTo, $web, $topic) → $topic
internal package Foswiki::Query::QueryAlgorithms
Interface to query algorithms (documentation only, this class does nothing).
Implementations of this interface are found in Foswiki/Store/QueryAlgorithms.
The contract with query algorithms is specified by this interface description,
plus the 'query' unit tests in Fn_SEARCH.
StaticMethod query( $query, $web, $inputTopicSet, $session, $options ) → $infoCache
-
$query - A Foswiki::Query::Node object
-
$web - name of the web being searched
-
$inputTopicSet - iterator over names of topics in that web to search
-
$session - reference to the store object
-
$options - hash of requested options
This is the top-level interface to a query algorithm. A store module can call
this method to start the 'hard work' query process. That process will call
back to the
getField method in this module to evaluate leaf data in the
store.
To monitor the evaluation process, use the MONITOR_EVAL setting in
Foswiki::Query::Node
StaticMethod getField($class, $node, $data, $field ) → $result
-
$class is this package
-
$node is the query node
-
$data is the indexed object
-
$field is the scalar being used to index the object
getField is used by the query evaluation code in
Foswiki::Query::Node to get
information about a leaf node, or 'field'. A field can be a name, or a literal,
and the information it refers to can be a scalar, a reference to a hash, or
a reference to an array. The exact interpretation of fields is
context-dependant, according to reasonably complex rules best documented by
the Fn_SEARCH unit test and
QuerySearch.
StaticMethod getRefTopic($class, $relativeTo, $web, $topic) → $topic
-
$class is this package
-
$relativeTo is a pointer into the data structure of this module where the ref is relative to; for example, in the expression "other/'Web.Topic'" then $relativeTo is other.
-
$web the web; Web in the above example
-
$topic the topic; Topic in the above example
This method supports the
Foswiki::Query::OP_ref operator by abstracting the
loading of a topic referred to using the '/' operator. For more information
on the '/' operator, see
QuerySearch.