Global search
Installation
To use Solr as Moodle's search engine you need the PHP Solr extension and a Solr server.
PHP Solr extension
You need PHP Solr extension installed. Use PECL Solr Extension 1.x for Solr Server 3.x, or use PECL Solr 2.x for Solr Server 4.0+.
You can download the official latest versions from [1](http://pecl.php.net/package/solr)
Basic installation steps (using apache web server):
Linux
sudo apt-get install libpcre3-dev libxml2-dev libcurl4-openssl-dev sudo pecl install solr sudo service apache2 restart sudo sh -c "echo 'extension=solr.so' > /etc/php5/apache2/conf.d/solr.ini" sudo sh -c "echo 'extension=solr.so' > /etc/php5/cli/conf.d/solr.ini"
OSX using macports
sudo port install apache-solr4 sudo port install php54-solr
Windows
Install the pecl package as usual. Sorry it has not been tested yet.
Solr server
The following snippet (feel free to copy & paste into a .sh script with execution permissions) will download Solr 5.4.1 in the current directory, start the solr server and create an index in it named moodle to add moodle data to it.
#!/bin/bash set -e SOLRVERSION=5.4.1 SOLRNAME=solr-$SOLRVERSION SOLRTAR=$SOLRNAME'.tgz' INDEXNAME=moodle if [ -d $SOLRNAME ]; then echo "Error: Directory $SOLRNAME already exists, remove it before starting the setup again." exit 1 fi if [ ! -f $SOLRTAR ]; then wget http://apache.mirror.digitalpacific.com.au/lucene/solr/$SOLRVERSION/$SOLRTAR fi tar -xvzf $SOLRTAR cd $SOLRNAME bin/solr start bin/solr create -c $INDEXNAME # After setting it up and creating the index use: # - "/yourdirectory/solrdir/bin/solr start" from CLI to start the server # - "/yourdirectory/solrdir/bin/solr stop" from CLI to stop the server.
Setup
- Go to Site administration -> Plugins -> Search -> Manage global search
- Follow Search setup steps to complete the setup process. Basically you have to:
- Enable global search
- Set Solr as search engine and tick all search areas checkboxes
- Go to Site administration -> Plugins -> Search -> Solr and set Host name to localhost, Port to 8983 and Index name to 'moodle' (the name of the index in Solr)
Indexing
Once global search is enabled a new task will be running through cron, although you can force documents indexing by:
- Going to Reports -> Global search info
- Tick Index all site contents and press Execute
or
- Executing the following task from CLI
php admin/tool/task/cli/schedule_task.php --execute="\\core\\task\\search_task"
Querying
- Hover the search icon in the navigation bar, type your query and press Enter
or
- Add Global search block somewhere
- Type your query and press Search