Global search: Difference between revisions

From MoodleDocs
mNo edit summary
Line 82: Line 82:
     # - "/yourdirectory/solrdir/bin/solr stop" from CLI to stop the server.
     # - "/yourdirectory/solrdir/bin/solr stop" from CLI to stop the server.


===Solr 4 schema setup===
=====Solr 4 schema setup=====


You cannot  use the schema setup script when using a Solr 4 server. If you really want to use the Solr 4x branch, here are the field types descriptions:
You cannot  use the schema setup script when using a Solr 4 server. If you really want to use the Solr 4x branch, here are the field types descriptions:

Revision as of 11:41, 4 May 2016

New feature
in Moodle 4.4!

What is Global search?

  • Global search lets you search everywhere on the Moodle site that you have access to. A student can search their courses for particular lecture notes, for example, or a teacher could search for subject-related activities.
  • The feature needs to be enabled by the administrator and a search box is then available next to the user menu.
Searching the site (when global search is enabled)

How does it work?

  • Click the search icon by the user menu and type a search term into the box that appears, or type into the box in the Global search block if enabled.
  • On the next screen, you can simply click the search button to search everywhere, or expand the Filter to search in specific areas:
  • You will then see results displayed from all areas of Moodle you have access to:
File:31GSResults2.png
Search results

How is it set up?

Note: Global search needs a search engine. Instructions for the installing the PHP Solr extension and a Solr server are below. See the Developer docs on Search engine plugins if you wish to write your own.


  • First enable Global search from Site administration > Advanced features.
  • Then set the feature up from Site administration > Plugins >Search >Manage global search.
  • Select Solr as the search engine and tick all search areas checkboxes.
  • From Site administration > Plugins>Search>Solr, set Host name to localhost, Port to 8983 and Index name to 'moodle' (the name of the index in Solr)

How to install Solr

You need PHP Solr extension installed. You can download the official latest versions from [1](http://pecl.php.net/package/solr) The minimum required version is PECL Solr 2.1 for PHP 5 branch and PECL Solr 2.4 for PHP 7 branch.

Basic installation steps (using apache web server):

Linux (Debian/Ubuntu)

   sudo apt-get install libpcre3-dev libxml2-dev libcurl4-openssl-dev
   sudo apt-get install php5-dev
   sudo apt-get install php-pear
   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

OSX using homebrew

   brew install homebrew/php/php56-solr

Windows

Install the pecl package as usual. (This has not yet been tested.)

The Solr server

Moodle 3.1 supports Solr server from 4.0 onwards, although you can only use the Solr schema setup script that we provide with Moodle from Solr 5. The latest Solr 5 available version is the recommended one; the same will apply to Solr 6 once it is released.

The following example snippet (feel free to copy & paste into a .sh script with execution permissions) will download Solr 5.4.1 (replace it with latest 5.x) 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.
Solr 4 schema setup

You cannot use the schema setup script when using a Solr 4 server. If you really want to use the Solr 4x branch, here are the field types descriptions:

Extracted from search/classes/document.php

Field name Field type Stored Indexed Query field
id org.apache.solr.schema.StrField true false false
itemid org.apache.solr.schema.TrieIntField true true false
title org.apache.solr.schema.TextField true true true
content org.apache.solr.schema.TextField true true true
contextid org.apache.solr.schema.TrieIntField true true false
areaid org.apache.solr.schema.StrField true true false
type org.apache.solr.schema.TrieIntField true true false
courseid org.apache.solr.schema.TrieIntField true true false
owneruserid org.apache.solr.schema.TrieIntField true true false
modified org.apache.solr.schema.TrieDateField true true false
userid org.apache.solr.schema.TrieIntField true true false
description1 org.apache.solr.schema.TextField true true true
description2 org.apache.solr.schema.TextField true true true
solr_filegroupingid org.apache.solr.schema.StrField true true false
solr_fileid org.apache.solr.schema.StrField true true false
solr_filecontenthash org.apache.solr.schema.StrField true true false
solr_fileindexstatus org.apache.solr.schema.TrieIntField true true false
solr_filecontent org.apache.solr.schema.TextField false true true