グローバル検索

グローバル検索とは何ですか?

  • グローバル検索では、アクセスできるMoodleサイトのあらゆる場所を検索できます。たとえば、学生は特定の講義ノートについてコースを検索したり、教師が主題関連の活動を検索したりできます。
  • この機能は、管理者が[拡張機能]で有効にし、[グローバル検索を管理する]ページから検索エンジンを選択する必要があります。

グローバル検索を有効にすると、ユーザーメニューの横に検索ボックスが表示されます。

サイトの検索(グローバル検索が有効な場合)

何を検索できますか?

コース、活動情報、フォーラムの投稿、ブックの章、用語集のエントリ、共同Wikiページなどの活動コンテンツを検索できます。

HTMLブロックコンテンツを検索できます。管理者が「検索可能コース」の設定をユーザがアクセス可能なコースすべてを検索する に設定すると、ユーザーには見えてはいるが登録されていないコースも検索されます。 (ゲストアクセスが可能なコースの場合、またはユーザがすべてのコースを表示する権限を持っている場合が該当します。)

仕組みは?

  • ユーザーメニューの検索アイコンをクリックして、表示されるボックスに検索語を入力するか、有効な場合はグローバル検索ブロックのボックスに入力します。
  • 次の画面で、単に検索ボタンをクリックして全てを対象に検索するか、フィルターを展開して特定の領域を検索できます。
検索のフィルタリング
  • その後、アクセスできるMoodleのすべての領域の結果が表示されます:
検索結果

Solr固有の機能

これらの機能は、 Solrを検索エンジンとして使用する場合にのみ使用可能です。

検索クエリ機能

次の検索クエリ機能のいずれかを使用して、検索を改善できます。

  • 検索クエリの前に「title:」、「content:」、「name:」、または「intro:」などのプレフィックスを付けて検索するフィールドを指定すると、タイトルに「news」という単語を含む結果が返されます
  • キーワードを結合または除外するブール演算子(「AND」、「OR」、「NOT」)
  • 検索クエリの文字を表すワイルドカード文字( '*'または '?')
  • 近接検索( '〜')例:mood〜2は「moodle」(「mood」から2文字離れた)を返し、Moodle Australia〜3は「Moodle HQ inオーストラリア、パース」を含む結果を返しますその他)
  • 「パースオーストラリア」^ 5「オーストラリア」などの特定の単語やフレーズを後押しする用語( '^')を追加すると、「パースオーストラリア」というフレーズが関連性の高い結果が返されます。

ファイル内容の索引付け

Solrには、ファイルリソースやフォーラム投稿への添付ファイルなど、ファイルのコンテンツにインデックスを付ける機能があります。

追加のフィルター

3.5の新機能:新しいフィールドにより、ユーザーIDによるフィルタリングとグループによる検索が容易になりました。

どのように設定されていますか?

注:グローバル検索には検索エンジンが必要です。最初にすべてを設定し、サイトのコンテンツにインデックスを作成してから 、グローバル検索を有効にすることをお勧めします。

Moodleコアには、シンプルグローバル検索とSolrの2つの検索エンジンが含まれています。独自に作成する場合は、検索エンジンプラグインの開発者向けドキュメントをご覧ください。

シンプル検索の設定

新機能
Moodle 3.5で

シンプルグローバル検索は、外部検索エンジンをインストールすることなく、グローバル検索機能を提供します。

シンプルなグローバル検索

Solrのセットアップ

  • 使用可能な最新のSolr 5バージョンが推奨されます。
  • Moodleは4.0以降のSolrサーバーをサポートしていますが、使用できるのはSolr 5のMoodleで提供されているSolrスキーマセットアップスクリプトのみです。最新のSolr 5の利用可能なバージョンが推奨されます。 Solr 6がリリースされると、同じことが当てはまります。
  • フィールドタイプ「int」が削除されたため、Solr 7は現在サポートされていません。

一般的なセットアップ

  1. サイト管理>プラグイン>検索>検索エンジンとしてSolrを選択し、必要に応じて検索領域のチェックボックスにチェックマークを付けて、 グローバル検索を管理する機能を設定します。
  2. [サイト管理]> [プラグイン]> [検索]> [Solr]でホスト名をlocalhostに、 ポートを8983に、 インデックス名を 'moodle'(Solrのインデックスの名前)に設定します
  3. SSL暗号化と基本認証を使用してSolrを使用している場合(代わりにクライアント証明書を使用する場合は以下を参照)、これを構成する必要があります。これは、solrがWebサーバーサーバーにインストールされていない場合に重要です。
    1. [サイト管理]> [プラグイン]> [検索]> [Solr]に移動します
    2. セキュアモードを[はい]に設定します
    3. 必要に応じてポート番号を設定します(SSLインストールではポート443を使用する場合があります)。
    4. ユーザー名とパスワードを入力します。
  4. クライアント証明書を介してSSL暗号化でSolrを使用している場合、Moodleをそのように設定する必要があります。これは、solrがWebサーバーサーバーにインストールされていない場合に重要です。
    1. サーバーMoodleにあり、PHPプロセスで読み取り可能な、pem形式の両方の個別のキーファイルとcacertファイルが必要になります。
    2. [サイト管理]> [プラグイン]> [検索]> [Solr]に移動します
    3. セキュアモードを[はい]に設定します
    4. /path/to/certs/solr-ssl.cacert.pemへのSSL証明書
    5. /path/to/certs/solr-ssl.key.pemへのSSLキー
    6. SSL key Password to SSLキーのロックに使用されるパスワード
    7. /path/to/certs/solr-ssl.cacert.pemへのSSL CA証明書名
  5. ここで、作成したSolrインデックスにサイトのデータを入力する必要があります。 サイト管理>レポート>グローバル検索情報に移動するか、CLIからsearch / cli / indexer.phpスクリプトを実行することにより、Webインターフェースから実行できます。 CLIスクリプトは、大規模なサイトに推奨されるオプションです。
    # sudo -u www-run php search/cli/indexer.php --force
  6. [サイト管理]> [拡張機能]でグローバル検索を有効にします

ファイルの索引付け

Solrには、ファイルリソースやフォーラム投稿への添付ファイルなど、ファイルのコンテンツにインデックスを付ける機能があります。これは、SolrにバンドルされているTikaエンジンを使用します。この機能を有効にするには:

  1. [サイト管理]> [プラグイン]> [検索]> [Solr]で[ ファイルインデックス作成を有効にする]チェックボックスを有効にします。
  2. インデックスの最大ファイルサイズ(kB)をある値に設定します-デフォルトは2097152 (2GB)です
    • この制限を超えるファイルは、索引付けのためにSolrに送信されませんが、ファイル名は引き続き索引付けされます。

34の新機能:ファイルのインデックス作成がさかのぼって機能するようになりました。つまり、ファイルのインデックス作成を有効にせずにグローバル検索を設定し、後日ファイルのインデックス作成を有効にすると、既存のオブジェクトに関連付けられたファイルが含まれます。

Solrのインストール方法

PHP Solr拡張機能がインストールされている必要があります。公式の最新バージョンはPECL:Package:solrからダウンロードできます。最低限必要なバージョンは、PHP 5ブランチのPECL Solr 2.1およびPHP 7ブランチのPECL Solr 2.4です。

基本的なインストール手順(Apache Webサーバーを使用):

Linux(Debian / Ubuntu)

APTの使用:

   sudo apt install php-solr
   sudo service apache2 restart

APTを介してSOLR PHPモジュールをインストールできない場合は、次を試してください。

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

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 / Centos 6および7)
組み込みのphp5パッケージを使用する
 yum install php-pecl-solr2
 service httpd restart
サードパーティのphp7パッケージの使用(webtactic)
 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
macportsを使用したOSX
   sudo port install apache-solr4
   sudo port install php54-solr
homebrewを使用したOSX
   brew install homebrew/php/php56-solr

通常どおりpeclパッケージをインストールします。 (これはまだテストされていません。)

Solrサーバー

中/大規模サイトでは、maxBooleanClauses設定を増やす必要がある場合があることに注意してください。 [https://tracker.moodle.org/browse/MDL-54992 MDL-54992 ]では、サーバーを照会する別の方法に取り組んでいます。

一部のSolrバージョンに影響するセキュリティ問題があることに注意してください。パッチが適用されたバージョンは5.5.5、6.6.2、7.1、7.2であり、すべての新しいバージョンにパッチが適用されます。 Solrサーバーのバージョンが低いが、パッチを適用したバージョンのいずれかにアップグレードできない場合は、XMLクエリパーサーを無効にすることをお勧めします。

次のサンプルスニペット(実行権限のある.shスクリプトに自由にコピーして貼り付けてください)は、現在のディレクトリにSolr 5.5.5をダウンロードし(最新の5.xに置き換えます)、solrサーバーを起動し、その中にインデックスを作成します名前のmoodleは、それまでのMoodleデータを追加します。 wgetでエラーが発生した場合は、 http: //www-us.apache.org/dist/lucene/solrを確認してSOLRVERSIONを更新してください

   #!/bin/bash
   set -e
   SOLRVERSION=5.5.5
   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 https://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スキーマのセットアップ

MoodleはSolrの管理スキーマインターフェースを使用して必要なフィールドをインストールします。 [グローバル検索を管理する]ページから何をするかが指示されます。

非常に大規模なサイトまたはビジーなサイトの場合、デフォルトのSolrスキーマから_text_フィールドおよび関連するコピーディレクティブを手動で削除することをお勧めします。このフィールドはMoodleでは使用されないため、インデックス作成が大幅に遅くなり、結果のSolrコアのサイズが大きくなります。

Solr 4スキーマのセットアップ

Solr 4サーバーを使用している場合、スキーマセットアップスクリプトは使用できません。本当にSolr 4xブランチを使用したい場合、フィールドタイプの説明を以下に示します。

search / classes / document.phpから抽出

フィールド名フィールドタイプ保存済みインデックス付きクエリフィールド
id org.apache.solr.schema.StrField
itemid org.apache.solr.schema.TrieIntField
タイトル org.apache.solr.schema.TextField
コンテンツ org.apache.solr.schema.TextField
contextid org.apache.solr.schema.TrieIntField
areaid org.apache.solr.schema.StrField
タイプ org.apache.solr.schema.TrieIntField
courseid org.apache.solr.schema.TrieIntField
owneruserid org.apache.solr.schema.TrieIntField
modified org.apache.solr.schema.TrieDateField
ユーザーID org.apache.solr.schema.TrieIntField
説明1 org.apache.solr.schema.TextField
説明2 org.apache.solr.schema.TextField
solr_filegroupingid org.apache.solr.schema.StrField
solr_fileid org.apache.solr.schema.StrField
solr_filecontenthash org.apache.solr.schema.StrField
solr_fileindexstatus org.apache.solr.schema.TrieIntField
solr_filecontent org.apache.solr.schema.TextField
メモリとファイルのインデックス作成に関する考慮事項

大規模なサイトの場合、特にファイルインデックス機能を使用している場合は、Solrに十分なメモリ、たとえば10〜20 GBを割り当てることをお勧めします。デフォルトの512MB以上のRAMでSolrを起動するには、 -mオプションを使用します。

solr start -m 12g

Solrが自動的に開始されたときにメモリを増やす方法については、Solrのバージョンのドキュメントを参照してください。

多すぎるブール句エラー

Moodleが検索の許可を処理する方法のため、多数の活動(> 1000)にアクセスできる非管理者ユーザーがいる場合、次のようなエラーが発生する可能性があります。

   The query you provided could not be parsed by the search engine: org.apache.solr.search.SyntaxError: Cannot parse 
   ...
   too many boolean clauses

これを修正するには、SolrコアのmaxBooleanClauses設定を増やす必要があります。設定はcorename / conf / solrconfig.xmlにあります。

この重要な注意事項は、構成ファイルに含まれています。

   ** 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.

つまり、一貫した動作を実現するには、Solrサーバーのすべてのコアでこの値を更新する必要があります。

Centos 7にSolrサーバーをインストールするためのコマンド

まず最初にJava(openjdk)をインストールします

yum install java-1.8.0-openjdk

solrのユーザーを追加

adduser solr

solrサーバーをダウンロードし、最新版をここで見つけます: http ://lucene.apache.org/solr/mirrors-solr-latest-redir.html、リストから最新のsolr- [version] .tgzをダウンロードします

必要なコマンドのリストを次に示します(最新のsolrが推奨されることに注意してください。コマンドを適切なバージョンに変更してください)。

cd /opt
wget https://www-eu.apache.org/dist/lucene/solr/6.6.0/solr-6.6.0.tgz
tar zxvf solr-6.6.0.tgz
cp solr-6.6.0/bin/install_solr_service.sh .
rm -rf solr-6.6.0
./install_solr_service.sh solr-6.6.0.tgz
chkconfig solr on

インデックスを作成する

su - solr -c "/opt/solr/bin/solr create_core -c moodle"

次に、Moodleに移動して、作成されたインデックス名を設定します(moodle)

こちらもご覧ください

フォーラムの議論:


Moodleグローバル検索の簡単な紹介に続いて、Moodle 3.4(およびMoodle 3.5の一部)の新機能と修正の説明が続きます。