1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Post installation and migration code. 19 * 20 * @package search_simpledb 21 * @copyright 2016 Dan Poltawski <dan@moodle.com> 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 defined('MOODLE_INTERNAL') || die; 26 27 /** 28 * Post installation code. 29 * 30 * @package search_simpledb 31 * @copyright 2016 Dan Poltawski <dan@moodle.com> 32 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 33 */ 34 function xmldb_search_simpledb_install() { 35 global $DB; 36 37 switch ($DB->get_dbfamily()) { 38 case 'postgres': 39 // There are a few other ways of doing this which avoid the need for individual indexes. 40 $DB->execute("CREATE INDEX {search_simpledb_title} ON {search_simpledb_index} " . 41 "USING gin(to_tsvector('simple', title))"); 42 $DB->execute("CREATE INDEX {search_simpledb_content} ON {search_simpledb_index} " . 43 "USING gin(to_tsvector('simple', content))"); 44 $DB->execute("CREATE INDEX {search_simpledb_description1} ON {search_simpledb_index} " . 45 "USING gin(to_tsvector('simple', description1))"); 46 $DB->execute("CREATE INDEX {search_simpledb_description2} ON {search_simpledb_index} " . 47 "USING gin(to_tsvector('simple', description2))"); 48 break; 49 case 'mysql': 50 if ($DB->is_fulltext_search_supported()) { 51 $DB->execute("CREATE FULLTEXT INDEX {search_simpledb_index_index} 52 ON {search_simpledb_index} (title, content, description1, description2)"); 53 } 54 break; 55 case 'mssql': 56 if ($DB->is_fulltext_search_supported()) { 57 58 $catalogname = $DB->get_prefix() . 'search_simpledb_catalog'; 59 if (!$DB->record_exists_sql('SELECT * FROM sys.fulltext_catalogs WHERE name = ?', array($catalogname))) { 60 $DB->execute("CREATE FULLTEXT CATALOG {search_simpledb_catalog} WITH ACCENT_SENSITIVITY=OFF"); 61 } 62 63 if (defined('PHPUNIT_UTIL') and PHPUNIT_UTIL) { 64 // We want manual tracking for phpunit because the fulltext index does get auto populated fast enough. 65 $changetracking = 'MANUAL'; 66 } else { 67 $changetracking = 'AUTO'; 68 } 69 $DB->execute("CREATE FULLTEXT INDEX ON {search_simpledb_index} (title, content, description1, description2) 70 KEY INDEX {searsimpinde_id_pk} ON {search_simpledb_catalog} WITH CHANGE_TRACKING $changetracking"); 71 } 72 break; 73 } 74 } 75
title
Description
Body
title
Description
Body
title
Description
Body
title
Body