== SEARCH !SubSystem == ADEI has a modular search subsystem. The search capabilities are provided by the search engines which providing one-or-more search modules. Besides the search term, the search string may specify the search modules to perform search and number of limits to filter results. The module parameters could be specified along with the modules. === Format of search string === The search string consists of four components: * The first component defines type of the search. Examples are ''item search'', ''channel value search'', ''datetime search''. * Second component provides some options. For example, demands exact or fuzzy match * Third and fourth components are type-dependent and containing search string and additional limits The format is as follows: {{{ [type/module specification] [global flags] [limits] }}} Everything besides search string is optional. By default if the type is not specified, the search string is analyzed. Analysis routine guesses the type of search and executes a default set of modules for this type. The default behavior is to search for channel and group names. See [wiki:adeiSEARCH#StringAnalysis String Analysis ] section for details. The search type is specified in the curly brackets in the beginning of the search string. The search module available in the ''classes/search'' should be indicated (name of the class should be specified). Optional options for the class constructor could be indicated as well. If multiple modules are specified, the multiple searches are performed sequentially. The following format is expected: {{{ {module_name(opt1=value1,opt=value2), another_module(...)} }}} The global options are going next to the search type and specified in the square brackets. This options then passed to the search modules with the search string and handled by the module code. The following options are supported: * ''='' - Exact match, default behavior is to match * ''w'' - Word match * ''~'' - Fuzzy match Filters are implemented as classes == INTERVALSearch Engine == '''Provided Modules''': * ''interval'' - '''Supported Filters''': * ''interval''' == ITEMSearch Engine == '''Provided Modules''': * ''channel'' - Searches items by uid only * ''item'' - Searches items by uid and name * ''group'' - Searches groups by name * ''mask'' - Searches masks by name * ''control'' - Searches controls by uid only * ''control_item'' - Searches controls by uid and name * ''control_group'' - Searches control groups by name == PROXYSearch Engine == '''Provided Modules''': * ''proxy'' - '''Supported Filters''': * ''interval''' == String Analysis ==