グローバル検索

提供: MoodleDocs
移動先:案内検索

グローバル検索とは

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

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

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

何を検索できますか?

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

管理者は、「検索可能なコース」に設定設定した場合、HTMLブロックのコンテンツは、検索することができ、 すべてのコース内のユーザがアクセスでき検索のユーザに表示されますが、彼らはまた、検索することが可能に登録されていない、その後のコースを。 (これらのコースは、ゲストアクセスのあるコース、またはユーザがすべてのコースを表示できる場合)。

どのように機能しますか?

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

Solr固有の機能

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

検索クエリ機能

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

  • 検索クエリの前に 'title:', 'content:', 'name:' または 'intro:' を付けて検索するフィールドを指定すると、たとえば 'title:news' はタイトルに 'news' という単語を含む結果を返します
  • キーワードを結合または除外するブール演算子('AND', 'OR', 'NOT')
  • 検索クエリの文字を表すワイルドカード文字('*' または '?')
  • 近接検索('~')例:mood~2は "moodle"("mood"から2文字離れたもの)を返し、Moodle Australia~3は "Moodle HQ in Perth, Australia" を含む結果を返します(クエリされた用語は、お互い)
  • 特定の単語やフレーズをブーストする用語('^')をブーストすると、たとえば "Perth Australia"^5 "Australia" を使用すると、 "Perth Australia"というフレーズの関連性の高い結果が返されます。

ファイル内容の索引付け

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

追加のフィルタ

3.5の新機能 :ユーザIDによるフィルタリングとグループによる検索を容易にする新しいフィールド。

設定方法は?

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

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

シンプル検索のセットアップ

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

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

Solrのセットアップ

  • 最新のSolr 5の利用可能なバージョンが推奨バージョンです。
  • Moodleは4.0以降のSolrサーバをサポートしていますが、使用できるのはSolr 5のMoodleで提供されているSolrスキーマ設定スクリプトのみです。最新のSolr 5の利用可能なバージョンが推奨されます。リリースされたSolr 6にも同じことが適用されます。

一般的なセットアップ

  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サーバserverにインストールされていない場合に重要です。
    1. サーバMoodleに配置され、PHPプロセスで読み取り可能な、pem形式の個別のキーファイルとcacertファイルが必要です。
    2. サイト管理 > プラグイン > 検索 > Solrに移動します
    3. セキュアモードを「はい」に設定します
    4. SSL証明書から/path/to/certs/solr-ssl.cacert.pem
    5. SSLキーを/path/to/certs/solr-ssl.key.pemに
    6. SSLキーパスワードからSSLキーのロックに使用されるパスワード
    7. SSL CA証明書名から/path/to/certs/solr-ssl.cacert.pem
  5. 次に、作成したSolrインデックスにサイトのデータを入力する必要があります。 サイト管理 > レポート > グローバル検索情報か、CLIからsearch/cli/indexer.phpスクリプトを実行して、Webインターフェースから実行できます。 CLIスクリプトは、大規模なサイトに推奨されるオプションです。
  6. sudo -u www-run php search/cli/indexer.php --force
  7. サイト管理 > 高度な機能グローバル検索を有効にする

ファイルのインデックス作成

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

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

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

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 
Windows
  • PHPのバージョン(コンパイラー(VC15など)、アーキテクチャー(x64など)、およびスレッドの安全性については、PHPのバージョン(サイト管理 > サーバ > PHP情報を参照)を確認してください。
  • PECL(またはこのページがない場合は、対応するPHP拡張DLLを取得しますPECLで)。
  • php\extフォルダーにDLLを追加します。
  • ディレクティブ "extension=php_solr.dll" をphp.iniファイルに追加します。
  • Webサーバを再起動します。
  • Java Runtime Environmentをインストールします
  • SolrをSolrダウンロードページからダウンロードします(例:solr-5.5.5.zip)。
  • アクセス可能な場所に抽出します。例:c:\ solr-5.5.5
  • コマンドラインから(管理者として)、C:\ solr-5.5.5で実行...
    • bin\solr start
    • bin\solr status
    • bin\solr create -c moodle
    • bin\solr stop -all
  • (管理者として)C:\solr-5.5.5\server\solr\moodle\conf\solrconfig.xmlを編集して行を変更...
1024   1024  

...に...

524288   524288  
  • Solrを開始するスケジュールされたタスクを作成する
    • 一般
      • ユーザがログオンしているかどうかにかかわらず実行します
      • 最高の権限で実行
      • Windows Server 2016用に構成
    • トリガー
      • 毎日実行(いつでも開始)
      • 無期限に1時間ごとに繰り返します
    • 行動
      • プログラムを開始
      • スクリプト:C:\ solr-5.5.5 \ bin \ solr.cmd
      • 引数を追加:start -m 2g
    • 条件
      • オフ:コンピュータがAC電源で動作しているときにのみタスクを開始します
    • 設定
      • チェックを外します:タスクの実行時間が次の場合に停止する:...
      • タスクがすでに実行されている場合、次のルールが適用されます:新しいインスタンスを開始しないでください
  • スケジュールされたタスクを手動で実行します(現時点では)
  • コマンドラインのc:\ solr-5.5.5で、 bin \ solr status を実行して、実行されていることを確認します
  • MoodleでSolrサーバを以下のように設定します。
  • サイト管理>プラグイン>検索>グローバル検索の管理にアクセスします。検索スキーマを設定するように求められる場合があります。
  • スケジュールされたタスクを実行して、コマンドラインから検索インデックスを作成します。 10分後にタイムアウトになるため、最初は数回実行する必要があり、多くのファイルがある可能性があります。
php admin\tool\task\cli\schedule_task.php --execute=\core\task\search_index_task 
  • solr status とタスクマネージャ(Javaプロセスを参照)で使用されるメモリの量に注意してください。
Solrサーバ

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

一部のSolrバージョンに影響するセキュリティの問題があることに注意してください。パッチが適用されたバージョンは5.5.5、6.6.2、7.1、7.2で、すべての新しいバージョンにパッチが適用されています。 Solrサーバのバージョンは低いが、パッチを適用したバージョンの1つにアップグレードできない場合は、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 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スキーマ設定

MoodleはSolrのマネージドスキーマインターフェースを使用して必要なフィールドをインストールします。 [グローバル検索の管理]ページから実行する操作について説明します。

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

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

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

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
メモリとファイルのインデックス作成に関する考慮事項

大規模なサイトの場合、特にファイルのインデックス作成機能を使用している場合は、Solrに十分なメモリ(10〜20GBなど)を与えることをお勧めします。デフォルトの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 Serverをインストールするためのコマンド

まず、java(openjdk)をインストールします。

yum install java-1.8.0-openjdk 

Solrのユーザを追加

adduser solr 

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

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

cd /opt 
wget http://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)

こちらもご覧ください

フォーラムディスカッション:

シンプル検索でのMySQLデータベース接続エラー: このSQLクエリは問題を解決するはずです

ALTER TABLE mdl_search_simpledb_index ADD FULLTEXT(title, content, description1, description2)

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