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

Next revision
Previous revision
extensions:combodo-fulltext-search [2019/01/21 15:58]
vdumas created
extensions:combodo-fulltext-search [2020/07/07 18:50] (current)
Line 4: Line 4:
 description_wiki : Use a faster and more relevant global search with easy-to-filter results description_wiki : Use a faster and more relevant global search with easy-to-filter results
 index_hidden ​    : yes index_hidden ​    : yes
-version ​         : 1.0.10 +version ​         : 1.0.13 
-release_dt ​      : ​2019-01-09+release_dt ​      : ​2020-06-29
 itop-version-min : 2.5.0 itop-version-min : 2.5.0
-download_url ​    : https://​www.itophub.io/​wiki/​page?​id=extensions:​coming-soon 
 code             : combodo-fulltext-search code             : combodo-fulltext-search
 state            : stable state            : stable
 product_hidden ​  : not-included product_hidden ​  : not-included
-module-lists_hidden : combodo-fulltext-search/​1.0.10+module-lists_hidden : combodo-fulltext-search/​1.0.11 
 +diffusion ​       : Client Store, iTop Hub
 ---- ----
  
 This extension replace the standard global search with a faster and more accurate search. This extension replace the standard global search with a faster and more accurate search.
 +
 +<note warning>​This extension requires Index FullText, so **MySQL 5.6+** or **Mariadb 10.0.5+**</​note>​
  
 ===== Features ===== ===== Features =====
Line 20: Line 22:
  
   * Users can improve results accuracy by specifying required, optional and denied words.   * Users can improve results accuracy by specifying required, optional and denied words.
 +  * Administrator can fine-tune the results relevance, by changing configuration parameters.
   * It uses MySQL fulltext feature to perform the global search.   * 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 ===== ===== Revision History =====
 ^  Release Date  ^  Version ​ ^  Comments ​ ^ ^  Release Date  ^  Version ​ ^  Comments ​ ^
 +|  2020-06-29 ​ | 1.0.13 | - Compatibility iTop 2.7 \\ - Fix searches with some reserved characters \\ - Search admin menu |
 +|  2019-02-04 ​ | 1.0.11 | - Fix broken related link |
 |  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.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 | |  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-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-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 | + 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. |+ 2017-12-14 ​ | 0.0.1 | - First version experimental. |
  
  
Line 40: Line 43:
 ===== Requirements ===== ===== Requirements =====
  
-  * MySQL 5.6.+  * MySQL 5.6 or above 
 +  * Mariadb 10.0.5 or above
   * iTop 2.5.0 or above   * iTop 2.5.0 or above
 +
 ===== Installation ===== ===== Installation =====
  
-As any other extension. Put the extension ​in the “extensions” folder and run the setup again.+Use the [[extensions:​installation|Standard installation process]] for this extension.
  
 <​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: <​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:
Line 51: Line 56:
  
 ===== Configuration ===== ===== Configuration =====
 +
 ^ Parameter ^ Type ^ Description ^ Default value ^ ^ 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. |  | 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. | 
Line 68: Line 74:
 | background_index_full_rebuild_enabled | boolean| Allow daily rebuild of the index. | true | | 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'​ | | 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 ==== ==== Background behavior ====
  
 __Searching for one word__ __Searching for one word__
-When searching for a single word (example: //demo//) the following ​researches ​are done:+When searching for a single word (example: //demo//) the following ​searches ​are done:
   - The word: //demo//   - The word: //demo//
   - The words starting with the search: //demo*//   - The words starting with the search: //demo*//
Line 81: Line 84:
 __Searching for multiple words__ __Searching for multiple words__
  
-When searching for **multiple words**, (example: //​user-level lock//) the following ​researches ​are done:+When searching for **multiple words**, (example: //​user-level lock//) the following ​searches ​are done:
   - The exact sentence entered: //"​user_level lock"//​   - The exact sentence entered: //"​user_level lock"//​
   - All the words are present: //​+user_level +lock//   - All the words are present: //​+user_level +lock//
   - At least one word is 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>​+As ''​-''​ is a keyword to exclude a word, it is replaced by ''​_''​ which is another keyword to represent any single character.
  
 __Computing weight__ __Computing weight__
Line 92: Line 95:
 Each search is bringing points calculated by MySQL fulltext search, which are then weighted with the configuration parameters set. Each search is bringing points calculated by MySQL fulltext search, which are then weighted with the configuration parameters set.
  
-Administrators only have access ​to:  +<​note>​Raw weight is provided by MySQL. Parameters are just a multiplier factor of the MySQL weight. You cannot influence the raw weight within iTop.</​note>​ 
-  * **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.+==== What values ​to set ==== 
 + 
 +To ensure that the search will be efficient within your iTop, there are additional actions for Administrator users:  
 +  * **Global search management** ​action ​which allow to rebuild the indexes after a change of configuration parameter: ''​object_weight_factor''​. 
 +  * **Debug** action ​which display details on how the **result ordering** is generated, based on weight. ​
  
 |{{:​extensions:​globalsearchdebug.png?​|}}|{{:​extensions:​globalsearch-expend-search.png?​|}}| |{{:​extensions:​globalsearchdebug.png?​|}}|{{:​extensions:​globalsearch-expend-search.png?​|}}|
  
 +  * //​user_level lock// has a MySQL provided weight
 +  * //"​user_level lock"//​ has the above weight * ''​sentence_weight_factor''​
 +  * //Total Score// is the sum of the various scores * ''​object_weight_factor''​
  
 +<note tip>Get from your users "​sampling searches"​ on your real data, with the object expected to be in the top 5 results. Then change the various parameters, checking the result using the ''​Debug''​ action on those "​sampling searches"​.</​note>​
  
 ===== Usage ===== ===== Usage =====
  
 Just type the **words** in the global search field, then ''​enter''​ or click on the magnifier icon to get the result : 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?​|}} {{:​extensions:​globalsearch-overviewuser.png?​|}}
  
  
-==== Tips to fine tune your search ====+==== Tips to specify ​your search ====
  
 <​note>​Add ''​+''​ at the beginning of **required** word \\ <​note>​Add ''​+''​ at the beginning of **required** word \\
Line 114: Line 124:
 //will search for User Requests which contain mandatorily '​PHP'​ and maybe '​error'​ //</​note>​ //will search for User Requests which contain mandatorily '​PHP'​ and maybe '​error'​ //</​note>​
  
-<​note>​Add ''​-''​ at the beginning of **forbidden** word \\+<​note>​Add ''​-''​ at the beginning of **excluded** word \\
   UserRequest:​PHP -closed ​   UserRequest:​PHP -closed ​
 //will search for User Requests which contain '​PHP'​ but not '​closed'​ (this exclude all UserRequest with status=closed) //</​note>​ //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 \\ +<​note>​Add ''​*''​ at the **end** of an **incomplete** word \\ 
-  Organization:​Combo* +  Organization:​Combo* ​Grenoble 
-//will search for Organization which contain a word starting with '​Combo'​ //</​note>​+//will search for Organization which contain a word starting with '​Combo' ​and the exact word '​Grenoble'​. This is useless in single word search, as it does it automatically.//</​note>​
  
  
extensions/combodo-fulltext-search.txt · Last modified: 2020/07/07 18:50 (external edit)

";