User Tools

Site Tools


extensions:combodo-fulltext-search

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

extensions:combodo-fulltext-search [2019/01/21 15:58] (current)
vdumas created
Line 1: Line 1:
 +====== Enhanced global search ======
 +---- dataentry summary ----
 +name             : Enhanced global search
 +description_wiki : Use a faster and more relevant global search with easy-to-filter results
 +index_hidden ​    : yes
 +version ​         : 1.0.10
 +release_dt ​      : 2019-01-09
 +itop-version-min : 2.5.0
 +download_url ​    : https://​www.itophub.io/​wiki/​page?​id=extensions:​coming-soon
 +code             : combodo-fulltext-search
 +state            : stable
 +product_hidden ​  : not-included
 +module-lists_hidden : combodo-fulltext-search/​1.0.10
 +----
 +
 +This extension replace the standard global search with a faster and more accurate search.
 +
 +===== Features =====
 +
 +
 +  * Users can improve results accuracy by specifying required, optional and denied words.
 +  * It uses MySQL fulltext feature to perform the global search.
 +  * The result list relevance can be adapted using configuration parameters to define priorities for words, strings or class of objects.
 +
 +===== Revision History =====
 +^  Release Date  ^  Version ​ ^  Comments ​ ^
 +|  2019-01-09 ​ | 1.0.10 | - Fix the friendly name limit \\ - Fix Scheduled task \\ - Fix class name in tests \\ - Add Combodo license \\ |
 +|  2019-01-09 ​ | 1.0.9 | - Fix memory limit\\ - Fix Case log indexation\\ - Fix email search\\ - Limit the friendlyname size to fit in the DB |
 +| 2018-07-31 | 1.0.8 | - Better indexation\\ - Better search\\ - Support only InnoDB and BOOLEAN mode\\ - Display related objects on search\\ - Display matching fields\\ - Admin page : for re-indexation\\ - Class drill-down\\ - Debug mode |
 +| 2018-01-19 | 0.0.3 | - Better indexation when updating data\\ - '​populate_search.php'​ uses the configuration for the type of table to create (MyISAM or InnoDB)\\ - No constraint on MySQL (MyISAM must be used in version before 5.6) |
 +| 2018-01-09 | 0.0.2 | - Better error management.\\ - No indexation at setup (performance issues).\\ - '​populate_search.php'​ have to be used to create an InnoDB fulltext index.\\ - MySQL >= 5.6 |
 +| 2017-12-14 | 0.0.1 | - First version experimental. |
 +
 +
 +===== Limitations =====
 +
 +  * This extension relies on MySQL full-text feature.
 +  * It uses the main database configured for iTop.
 +
 +===== Requirements =====
 +
 +  * MySQL 5.6.
 +  * iTop 2.5.0 or above
 +===== Installation =====
 +
 +As any other extension. Put the extension in the “extensions” folder and run the setup again.
 +
 +<​note>​If the database is big, the index creation can run for a long time. It is possible to populate the full-text index by calling the following page:
 +
 +''<​itop_url>/​env-production/​combodo-fulltext-search/​populate-search-index.cli.php''​ </​note>​
 +
 +===== Configuration =====
 +^ Parameter ^ Type ^ Description ^ Default value ^
 +| object_weight_factor | array | Weight factor to apply for a given object name (format: '​classname'​ ⇒ '​value'​) the values can vary from 0 to 10 generally (0 means no results for this class). The default is 1 for every class not specified. The modification of this parameter needs a complete re-indexation of the database. | 
 +  array(
 +    '​Organization'​ => 2.0,
 +    '​Person'​ => 1.5,
 +    '​Location'​ => 1.2,
 +    '​SLT'​ => 0.8,
 +  )
 +|
 +| sentence_weight_factor| float| Weight factor for searches with multiple words matching exactly the list of words in that order. | 10.0 |
 +| mandatory_weight_factor| float| Weight factor for searches with all the words of the search matching at least once. | 2.0 |
 +| start_with_weight_factor| float| Weight factor for searches with one word matching the beginning. | 0.5 |
 +| max_interactive_index_update_time_in_sec| integer| Time in seconds allowed for direct indexation update on change. | 5 |
 +| background_index_refresh_period_in_min | integer | Period in minutes for background indexation. | 5 |
 +| background_max_indexation_time_in_min | integer | Execution time limit in minutes for background indexation. | 5 |
 +| background_index_full_rebuild_enabled | boolean| Allow daily rebuild of the index. | true |
 +| background_index_full_rebuild_time | hour| Starting hour of the full rebuild of the index. | '​01:​30'​ |
 +
 +<note tip>Get feedbacks from your users about searches they made which do not return in the top 5, something which every users would expect to get first. \\
 +Then fine tune the above parameters using the debug mode on those sampling searches.</​note>​
 +
 +==== Background behavior ====
 +
 +__Searching for one word__
 +When searching for a single word (example: //demo//) the following researches are done:
 +  - The word: //demo//
 +  - The words starting with the search: //demo*//
 +
 +__Searching for multiple words__
 +
 +When searching for **multiple words**, (example: //​user-level lock//) the following researches are done:
 +  - The exact sentence entered: //"​user_level lock"//​
 +  - All the words are present: //​+user_level +lock//
 +  - At least one word is present: //​user_level lock//
 +
 +<note tip>As ''​-''​ is a keyword to exclude a word, it is replaced by ''​_''​ which is another keyword to represent any single character</​note>​
 +
 +__Computing weight__
 +
 +Each search is bringing points calculated by MySQL fulltext search, which are then weighted with the configuration parameters set.
 +
 +Administrators only have access to: 
 +  * **Global search management** menu which allow to rebuild the indexes after a change of configuration parameter: ''​object_weight_factor''​.
 +  * **debug** menu which display details on how the **result ordering** is generated, based on weight.
 +
 +|{{:​extensions:​globalsearchdebug.png?​|}}|{{:​extensions:​globalsearch-expend-search.png?​|}}|
 +
 +
 +
 +===== Usage =====
 +
 +Just type the **words** in the global search field, then ''​enter''​ or click on the magnifier icon to get the result :
 +
 +
 +{{:​extensions:​globalsearch-overviewuser.png?​|}}
 +
 +
 +==== Tips to fine tune your search ====
 +
 +<​note>​Add ''​+''​ at the beginning of **required** word \\
 +  UserRequest:​+PHP error 
 +//will search for User Requests which contain mandatorily '​PHP'​ and maybe '​error'​ //</​note>​
 +
 +<​note>​Add ''​-''​ at the beginning of **forbidden** word \\
 +  UserRequest:​PHP -closed ​
 +//will search for User Requests which contain '​PHP'​ but not '​closed'​ (this exclude all UserRequest with status=closed) //</​note>​
 +
 +<​note>​Add ''​*''​ at the **end** of an incomplete word \\
 +  Organization:​Combo*
 +//will search for Organization which contain a word starting with '​Combo'​ //</​note>​
 +
 +
 +==== Restricting the search to a class ====
 +
 +By default the search searchs on **all Classes** with //​category//​ searchable, including abstract classes, such as Ticket, Contact or FunctionalCI.
 +
 +^ Restrict previous search to a single class ^ Expend back to all classes ^ 
 +|{{:​extensions:​globalsearch-restrictsearch.png?​|}} | {{:​extensions:​globalsearch-classsearch.png?​|}} |
 +| ::: | {{:​extensions:​globalsearch-expendsearch.png?​|}}|
 +
 +<​note>​Add ''<​nowiki><​class-name></​nowiki>:''​ at the **beginning** of a search pattern to limit the search to objects of this classe or one of its descendants \\
 +  FunctionalCI:​combodo
 +//will search for any FunctionalCI which contains "​combodo",​ so the returned objects can be Server, PC, Enclosure,​... //</​note>​
 +
 +The class name can be the internal name (like FunctionalCI) of the display name in the current language used (like CI fonctionnel).
 +
 +
 +==== Displaying matching words ====
 +
 +A menu allow to display some of the fields which have matched the requested pattern
 +
 +{{:​extensions:​globalsearch-matching-fields.png?​600|}}
 +
 +==== Displaying related objects ====
 +
 +On each returned object, you can request related objects:
 +{{:​extensions:​globalsearch-relatedobject.png?​600|}}
  
extensions/combodo-fulltext-search.txt · Last modified: 2019/01/21 15:58 by vdumas

";