internal package
Foswiki::Search internal package
Foswiki::Search This module implements all the search functionality.
ClassMethod
new ($session) Constructor for the singleton Search engine object.
ObjectMethod
finish() ObjectMethod
metacache ObjectMethod
parseSearch($searchString, $params) → Foswiki::*::Node parses the search string and builds the appropriate nodes (uses $param→{type} to work out which parser
TODO: make parser register themselves with their type, so that we could plug in anything.
StaticMethod
_isSetTrue( $value, $default ) → $boolean $value
is actually set to true, and 0 otherwise.
If the value is undef, then $default
is returned. If $default
is
not specified it is taken as 0.
ObjectMethod
searchWeb (...) Search one or more webs according to the parameters.
If_callback
is set, that means the caller wants results as
soon as they are ready. =_callback_ should be set to a reference
to a function which takes _cbdata
as the first parameter and
remaining parameters the same as 'print'.
If _callback
is set, the result is always undef. Otherwise the
result is a string containing the rendered search results.
The function will throw Error::Simple if it encounters any problems with the syntax of the search string.
Note: Ifformat
is set, template
will be ignored.
Note: For legacy, if regex
is defined, it will force type='regex'
If type="word"
it will be changed to type="keyword"
with wordboundaries=1
. This will be used for searching with scope="text" only, because scope="topic" will do a Perl search on topic names.
SMELL: If template
is defined bookview
will not work
SMELL: it seems that if you define _callback
then you are
responsible for converting the TML to HTML yourself!
FIXME: callback
cannot work with format parameter (consider format='| $topic |'
ObjectMethod
loadTemplates (...) this code was extracted from searchWeb, and should probably be private.
the implementation of
TODO: rewrite to take a resultset, a set of params? and a hash of sub's to enable evaluations of things like '$include(blah)' in format strings.
have a default set of replacements like $lt, $nop, $percnt, $dollar etc, and then the hash of subs can take care of %MACRO{}% specific complex to evaluate replacements..
(that way we don't pre-evaluate and then subst)
ObjectMethod
formatResult TODO: i don't really know what we'll need to do about order of processing. TODO: at minimum, the keys need to be sorted by length so that $datatime is processed before $date TODO: need to cater for $summary(params) style too
StaticMethod
displayFormField( $meta, $args, $newline ) → $text Parse the arguments to a $formfield specification and extract the relevant formfield from the given meta data.
args
string containing name of form field
$newline
- replacement text for newlines within the form field, if not defined defaults to <br />
args
can be appended with a commas
followed by a string format (\d+)([,\s*]\.\.\.)?). This supports the formatted
search function $formfield and is used to shorten the returned string or a
hyphenated string.