グローバル検索
内容
- 1 グローバル検索とは何ですか?
- 2 何を検索できますか?
- 3 仕組みは?
- 4 どのように設定されていますか?
- 5 参照
グローバル検索とは何ですか?
- グローバル検索では、アクセスできる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つの検索エンジンが含まれています。独自に作成する場合は、検索エンジンプラグインの開発者向けドキュメントをご覧ください。
シンプル検索の設定
シンプルグローバル検索は、外部検索エンジンをインストールすることなく、グローバル検索機能を提供します。
Solrのセットアップ
- 使用可能な最新のSolr 5バージョンが推奨されます。
- Moodleは4.0以降のSolrサーバーをサポートしていますが、使用できるのはSolr 5のMoodleで提供されているSolrスキーマセットアップスクリプトのみです。最新のSolr 5の利用可能なバージョンが推奨されます。 Solr 6がリリースされると、同じことが当てはまります。
- フィールドタイプ「int」が削除されたため、Solr 7は現在サポートされていません。
一般的なセットアップ
- サイト管理>プラグイン>検索>検索エンジンとしてSolrを選択し、必要に応じて検索領域のチェックボックスにチェックマークを付けて、 グローバル検索を管理する機能を設定します。
- [サイト管理]> [プラグイン]> [検索]> [Solr]で 、 ホスト名をlocalhostに、 ポートを8983に、 インデックス名を 'moodle'(Solrのインデックスの名前)に設定します
- SSL暗号化と基本認証を使用してSolrを使用している場合(代わりにクライアント証明書を使用する場合は以下を参照)、これを構成する必要があります。これは、solrがWebサーバーサーバーにインストールされていない場合に重要です。
- [サイト管理]> [プラグイン]> [検索]> [Solr]に移動します
- セキュアモードを[はい]に設定します
- 必要に応じてポート番号を設定します(SSLインストールではポート443を使用する場合があります)。
- ユーザー名とパスワードを入力します。
- クライアント証明書を介してSSL暗号化でSolrを使用している場合、Moodleをそのように設定する必要があります。これは、solrがWebサーバーサーバーにインストールされていない場合に重要です。
- サーバーMoodleにあり、PHPプロセスで読み取り可能な、pem形式の両方の個別のキーファイルとcacertファイルが必要になります。
- [サイト管理]> [プラグイン]> [検索]> [Solr]に移動します
- セキュアモードを[はい]に設定します
- /path/to/certs/solr-ssl.cacert.pemへのSSL証明書
- /path/to/certs/solr-ssl.key.pemへのSSLキー
- SSL key Password to SSLキーのロックに使用されるパスワード
- /path/to/certs/solr-ssl.cacert.pemへのSSL CA証明書名
- ここで、作成したSolrインデックスにサイトのデータを入力する必要があります。 サイト管理>レポート>グローバル検索情報に移動するか、CLIからsearch / cli / indexer.phpスクリプトを実行することにより、Webインターフェースから実行できます。 CLIスクリプトは、大規模なサイトに推奨されるオプションです。
# sudo -u www-run php search/cli/indexer.php --force
- [サイト管理]> [拡張機能]でグローバル検索を有効にします
ファイルの索引付け
Solrには、ファイルリソースやフォーラム投稿への添付ファイルなど、ファイルのコンテンツにインデックスを付ける機能があります。これは、SolrにバンドルされているTikaエンジンを使用します。この機能を有効にするには:
- [サイト管理]> [プラグイン]> [検索]> [Solr]で 、 [ ファイルインデックス作成を有効にする]チェックボックスを有効にします。
- インデックスの最大ファイルサイズ(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の一部)の新機能と修正の説明が続きます。