Globale Suche: Unterschied zwischen den Versionen
Zeile 56: | Zeile 56: | ||
* Dateien, die größer sind, werden nicht von Solr indiziert, der Dateiname wird jedoch indiziert. | * Dateien, die größer sind, werden nicht von Solr indiziert, der Dateiname wird jedoch indiziert. | ||
=== | ===Solr installieren=== | ||
Sie benötigen die PHP-Erweiterung für Solr. Die aktuelle Version können Sie auf der Seite [http://pecl.php.net/package/solr http://pecl.php.net/package/solr] herunterladen. Sie benötigen mindestens die Version PECL Solr 2.1 für PHP 5 bzw. PECL Solr 2.4 für PHP 7. | |||
Im folgenden sind die Installationsschritte für den Apache Webserver beschrieben. | |||
==== Linux (Debian/Ubuntu) ==== | ==== Linux (Debian/Ubuntu) ==== | ||
Unter PHP5.x | |||
sudo apt-get install libpcre3-dev libxml2-dev libcurl4-openssl-dev | sudo apt-get install libpcre3-dev libxml2-dev libcurl4-openssl-dev | ||
sudo apt-get install php5-dev | sudo apt-get install php5-dev | ||
Zeile 72: | Zeile 71: | ||
sudo service apache2 restart | sudo service apache2 restart | ||
Unter PHP 7 | |||
sudo apt-get install libpcre3-dev libxml2-dev libcurl4-openssl-dev | sudo apt-get install libpcre3-dev libxml2-dev libcurl4-openssl-dev | ||
sudo apt-get install php7.0-dev | sudo apt-get install php7.0-dev | ||
Zeile 83: | Zeile 82: | ||
==== Linux (Redhat/Centos7) ==== | ==== Linux (Redhat/Centos7) ==== | ||
===== | ===== Bei Verwendung von php5 ===== | ||
yum install php-pecl-solr2 | yum install php-pecl-solr2 | ||
service httpd restart | service httpd restart | ||
===== | ===== Bei Verwendung von php7 ===== | ||
yum install libxml2-devel pcre-devel libcurl-devel php70w-devel php70w-pear | yum install libxml2-devel pcre-devel libcurl-devel php70w-devel php70w-pear | ||
pecl install solr | pecl install solr | ||
Zeile 93: | Zeile 92: | ||
service httpd restart | service httpd restart | ||
==== OSX | ==== OSX mit macports ==== | ||
sudo port install apache-solr4 | sudo port install apache-solr4 | ||
sudo port install php54-solr | sudo port install php54-solr | ||
==== OSX | ==== OSX mit homebrew ==== | ||
brew install homebrew/php/php56-solr | brew install homebrew/php/php56-solr | ||
Zeile 104: | Zeile 103: | ||
==== Windows ==== | ==== Windows ==== | ||
Installieren Sie das pecl Paket (noch nicht getestet). | |||
==== | ==== Der Solr-Server ==== | ||
Moodle 3.1 | Moodle 3.1 unterstützt den Solr-Server ab Version 4.0. Das Solr Schema Setup Skript, das mit Moodle ausgeliefert wird, funktioniert jedoch nur für Solr 5. Die empfohlene Version ist Solr 5 (bzw. Solr 6 sobald diese verfügbar ist). | ||
Note that for medium/large sites you may need to increase maxBooleanClauses setting. In [https://tracker.moodle.org/browse/MDL-54992 MDL-54992] we are working on an alternative way to query the server. | Note that for medium/large sites you may need to increase maxBooleanClauses setting. In [https://tracker.moodle.org/browse/MDL-54992 MDL-54992] we are working on an alternative way to query the server. |
Version vom 26. Juli 2016, 09:01 Uhr
Neue Funktionalität
in Moodle 4.5!
Was bedeutet Globale Suche?
- Mit der Globalen Suche können Sie alle Bereiche der Moodle-Site durchsuchen, auf die Sie Zugriff haben. Z.B. können Kursteilnehmer/innen ihre Kurse nach Unterlagen durchsuchen oder Trainer/innen ihhre Kurse nach Aktivitäten.
- Die Moodle-Administration muss die Globale Suche systemweit aktivieren. Dann erscheint rechts oben neben Ihrem Namen im Nutzermenü ein Suchsymbol (Lupe).
- Sie können auch einen Globale-Suche-Block auf der Kursseite hinzufügen, um von dort die Suche zu ermöglichen.
Wonach kann ich suchen?
Suchen können nach Kursen, beschreibungen von Aktivitäten oder Arbeitsmaterialien und zum Teil nach Inhalten von Aktivitäten suchen (z.B. nach Forumsbeiträgen, Buchkapiteln, Glossareinträgen oder Wiki-Seiten).
In Zukunft sollen weitere Inhalte hinzukommen, siehe Entwickler-Dokumentation Search API (englisch).
Wie funktioniert die Globale Suche?
- Klicken Sie auf das Such-Symbol (Lupe) neben Ihrem Namen rechts oben im Nutzermenü und geben Sie den Suchbegriff in das Textfeld ein. Oder nutzen Sie das Such-feld im Globale-Suche-Block, falls dieser auf der Kursseite verfügbar ist.
odeClick 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.
- Auf der nächsten Seite klicken Sie auf den Buttn Suchen! oder Sie klappen den Filter für die erweiterte Suche auf.
- Es werden Suchergebnisse aus allen Bereichen von Moodle angezeigt, auf die Sie Zugriff haben.
Solr-Funktionalitäten
Sie können Ihre Suchergebnisse verbessern, indem Sie folgende Funktionalitäten der Suchmaschine Solr nutzen:
- Spezifizieren Sie das Feld, nach dem gesucht wird, indem Sie ein Präfix voranstellen: title:, content:, name: oder intro:. Z.B. wird bei der Eingabe title:Neu nach Ergebnissen gesucht, in denen das Wort Neu im Titel vorkommt.
- Nutzen Sie die logischen Operatoren AND, OR oder NOT, um Schlüsselwörter zu kombinieren oder auszuschließen.
- Verwenden Sie Jokerzeichen im Schlüselwort: * als Platzhalter für mehrere Zeichen, ? als Platzhalter für ein Zeichen.
- Verwenden Sie das Ähnlichkeitszeichen ~: Z.B. liefert die Eingabe mood~2 das Ergebnis "moodle" (2 Buchstaben Unterschied zu "mood"), die Eingabe Moodle Australia~3 liefert die Ergebnisse, die "Moodle HQ in Perth, Australia" enthalten (der gesuchte Ausdruck ist in 3 Worten des Suchergebnissen enthalten)
- Nutzen Sie das Zeichen ^, um Suchbegriffe zu verstärken. Z.B. liefert "Perth Australia"^5 "Australia" Suichergebnisse, bei denen "Perth Australia" eine stärkere Relevanz hat.
Wie wird die Globale Suche eingerichtet?
Hinweis: Die Globale Suche benötigt eine Suchmaschine. Weiter unten finden Sie eine Anleitung, wie Sie die Suchmaschine Solr und die zugehörige PHP-Erweiterung auf Ihrem Moodle-Server installieren. Wenn Sie eine eigene Suchmaschine programmieren wollen, finden Sie detaillierte Informationen in der Entwickler-Dokumentation Developer docs on Search engine plugins (englisch). Wir empfehlen, erst die Suchmaschine einzurichten und die Moodle-Inhalte zu indizieren, bevor Sie die Globale Suche aktivieren.
Solr einrichten
Allgemeines
- Auf der Seite Einstellungen > Website-Administration > Plugins > Suchen > Globale Suche verwalten wählen Sie Solr im Abschnitt Suchmaschine aus. Markieren Sie außerdem im Abschnitt Verfügbare Bereiche zur die Bereiche in Moodle, die durchsucht werden sollen.
- Auf der Seite Einstellungen > Website-Administration > Plugins > Suchen > Solr konfigurieren Sie die Suchmaschine: Setzen Sie Hostname auf localhost, Port auf 8983 und Indexname auf moodle' (Name des Indexes in Solr)
- Wenn Sie Solr zusammen mit SSL-Verschlüsselung verwenden, müssen Sie Moodle entsprechend konfigurieren (das ist wichtig, wenn Solr nicht auf dem Server installiert ist, auf dem der Webserver von Moodle läuft).
- Sie benötigen ein Key-File und ein CACert-File, beide im .pem Format auf Ihrem Moodle-Server und lesbar für den PHP-Prozess.
- Gehen Sie auf die Seite Einstellungen > Website-Administration > Plugins > Suchen > Solr.
- Setzen Sie die Einstellung Sicherer Modus auf Ja.
- Tragen Sie im Textfeld SSL Zertifikat den Pfad zum CACert-File ein.
- Tragen Sie im Textfeld SSL Key den Pfad zum Key-File ein.
- Tragen Sie im Textfeld SSL Key Password das Passwort für den SSL-Schlüssel ein.
- Anschließend müssen Sie den Solr-Index mit den Daten Ihrer Moodle-Site füllen. Gehen Sie dazu auf die Seite Einstellungen > Website-Administration > Berichte > Info zur globalen Suche oder rufen Sie das CLI-Skript moodle/search/cli/indexer.php. Für große Moodle-Systeme empfehlen wir die Nutzung des CLI-Skripts:
# sudo -u www-run php search/cli/indexer.php --force
- Aktivieren Sie abschließend die Globale Suche auf der Seite Einstellungen > Website-Administration > Zusatzoptionen.
Indizierung
Solr kann die inhalte von Dateien indizieren, die z.B. als Arbeitsmaterialien oder Forumsanhänge in Moodle bereitgestellt werden. Dabei wird die Tika Suchmaschine verwendet, die zusammen mit Solr ausgeliefert wird. Wenn Sie diese Funktionalität verwenden wollen:
- Gehen Sie auf die Seite Einstellungen > Website-Administration > Plugins > Suchen> Solr und markieren Sie die Checkbox Dateiindizierung aktivieren.
- Setzen Sie den Wert für Maximale Dateigröße zur Indizierung (kB) (der Standardwert ist 2097152 kB bzw. 2GB)
- Dateien, die größer sind, werden nicht von Solr indiziert, der Dateiname wird jedoch indiziert.
Solr installieren
Sie benötigen die PHP-Erweiterung für Solr. Die aktuelle Version können Sie auf der Seite http://pecl.php.net/package/solr herunterladen. Sie benötigen mindestens die Version PECL Solr 2.1 für PHP 5 bzw. PECL Solr 2.4 für PHP 7.
Im folgenden sind die Installationsschritte für den Apache Webserver beschrieben.
Linux (Debian/Ubuntu)
Unter PHP5.x
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 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" sudo service apache2 restart
Unter PHP 7
sudo apt-get install libpcre3-dev libxml2-dev libcurl4-openssl-dev sudo apt-get install php7.0-dev sudo apt-get install php-pear sudo pecl install solr sudo sh -c "echo 'extension=solr.so' > /etc/php/7.0/apache2/conf.d/solr.ini" sudo sh -c "echo 'extension=solr.so' > /etc/php/7.0/cli/conf.d/solr.ini" sudo service apache2 restart
Linux (Redhat/Centos7)
Bei Verwendung von php5
yum install php-pecl-solr2 service httpd restart
Bei Verwendung von php7
yum install libxml2-devel pcre-devel libcurl-devel php70w-devel php70w-pear pecl install solr echo "extension=solr.so" > /etc/php.d/solr.ini service httpd restart
OSX mit macports
sudo port install apache-solr4 sudo port install php54-solr
OSX mit homebrew
brew install homebrew/php/php56-solr
Windows
Installieren Sie das pecl Paket (noch nicht getestet).
Der Solr-Server
Moodle 3.1 unterstützt den Solr-Server ab Version 4.0. Das Solr Schema Setup Skript, das mit Moodle ausgeliefert wird, funktioniert jedoch nur für Solr 5. Die empfohlene Version ist Solr 5 (bzw. Solr 6 sobald diese verfügbar ist).
Note that for medium/large sites you may need to increase maxBooleanClauses setting. In [https://tracker.moodle.org/browse/MDL-54992 MDL-54992] we are working on an alternative way to query the server.
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://www-us.apache.org/dist/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 5/6 schema setup
Moodle will use Solr's managed schema interface to install the required fields. You will be directed on what to do from the Manage global search page.
For very large or busy sites, it is recommended that you manually remove the _text_ field, and associated copy directive from, the default Solr schema. This field is not used by Moodle, and will significantly slow indexing, and increase the size of the resulting Solr core.
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 |
Memory and File indexing considerations
For large sites, and particularly if you are using the File indexing feature, it's a good idea to give Solr plenty of memory, eg aound 10-20GB. To start Solr with more than its default 512MB of RAM, use the -m option:
solr start -m 12g
See the documents for your version of Solr on how to increases memory when Solr is started automatically.
Too many boolean clauses error
Because of the way Moodle handles permissions for searches, if you have non-admin users with access to a large number of activities (>1000), they may an error similar to the following:
The query you provided could not be parsed by the search engine: org.apache.solr.search.SyntaxError: Cannot parse ... too many boolean clauses
To correct this, you need to increase the maxBooleanClauses setting in your Solr core. The setting is located in corename/conf/solrconfig.xml.
This important note is included in the config file:
** WARNING ** This option actually modifies a global Lucene property that will affect all SolrCores. If multiple solrconfig.xml files disagree on this property, the value at any given moment will be based on the last SolrCore to be initialized.
This means that for consistent behavior you should update this value for all cores in the Solr server.
Siehe auch
- Global search doesn't index plugins? - Diskussionsbeitrag im Kurs Using Moodle auf moodle.org