MDL-53247 search: add cli indexer script
[moodle.git] / search / cli / indexer.php
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/>.
17 /**
18  * CLI search indexer
19  *
20  * @package    search
21  * @copyright  2016 Dan Poltawski <dan@moodle.com>
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 define('CLI_SCRIPT', true);
27 require(__DIR__.'/../../config.php');
28 require_once($CFG->libdir.'/clilib.php');      // cli only functions
30 list($options, $unrecognized) = cli_get_params(array('help' => false, 'force' => false, 'reindex' => false),
31                                                array('h' => 'help', 'f' => 'force', 'r' => 'reindex'));
33 if ($unrecognized) {
34     $unrecognized = implode("\n  ", $unrecognized);
35     cli_error(get_string('cliunknowoption', 'admin', $unrecognized));
36 }
38 if ($options['help']) {
39     $help =
40 "Index search data
42 Options:
43 -h, --help            Print out this help
44 -r, --reindex         Reindex data
45 -f, --force           Allow indexer to run, even if global search is disabled.
47 Example:
48 \$ sudo -u www-data /usr/bin/php search/cli/indexer.php --reindex
49 ";
51     echo $help;
52     die;
53 }
55 if (!\core_search\manager::is_global_search_enabled() && empty($options['force'])) {
56     cli_error('Global search is disabled. Use --force if you want to force an index while disabled');
57 }
59 $globalsearch = \core_search\manager::instance();
61 if (empty($options['reindex'])) {
62     echo "Running full index of site\n";
63     echo "==========================\n";
64     $globalsearch->index();
65 } else {
66     echo "Running full reindex of site\n";
67     echo "============================\n";
68     $globalsearch->index(true);
69 }
71 // Optimize index at last.
72 $globalsearch->optimize_index();