8. Metacat のインデクシング

Metacat バージョン 2.1 で、Metacat の内容から SOLR インデックスを 構築する機能が導入された。 “pathquery” 検索機構への対応は継続するけれども、 段階的に廃止して、より効率的な SOLR 検索インタフェイスに 移行する予定である。

Metacat SOLR インデックスを使用することを選択した Metacat アプリケーションは、 以下の利点を得ることができる。

  • 検索速度の向上
  • 内蔵のページング機能
  • 検索結果のフォーマットの調整(高度な管理用)

8.1. インデクス化される文書と項目

Metacat は既存の DataONE インデックスライブラリを統合する。 このライブラリには広く使われているメタデータフォーマットが多数含まれている。 すぐに使えるのは、

  1. EML
  2. FGDC
  3. Dryad*

8.2. 初期設定状態でインデクス化される項目

インデクス化される項目の完全な一覧は、DataONE の文書に記されている。

http://mule1.dataone.org/ArchitectureDocs-current/design/SearchMetadata.html

Metacat はまた現時点でインデクス化されている項目を報告する。 次の説明を見よ。

http://mule1.dataone.org/ArchitectureDocs-current/apis/MN_APIs.html#MNQuery.getQueryEngineDescription

なおエンジンには “solr” を指定する。

8.3. インデックスの設定

Metacat インデクスは分離したウェブアプリケーション(metacat-index.war) としてデプロイされる。それは Metacat アプリ(metacat.war) の 兄弟としてデプロイされるべきである。 metacat-index.war は SOLR サポートが欲しい場合にのみ必要であり、 いかなる Metacat アプリもそれを利用しないのなら省略しても何の問題もない。

最初のインストールやアップグレードの最中に、 “solr-home” で指定された場所に空のインデクスが初期化される。 次回に初期化された時に、Metacat インデクス は既存のMetacatの内容のすべてを インデクス化する。 註: solr-home に指定されたディレクトリは、Metacat を設定して 最初のインデクス化が行われるまで存在しないべきである。 そうでないなら meetacat-index で使用するための空のインデクスが 作成されないだろう。

更なる高度な設定項目が metacat.properties ファイルで利用可能である。 (このファイルは Metacat と Metacat-index で共用される)

8.4. 追加の文書型と項目を加える

作成予定: 新文書およびインデクス化項目を追加する手順書

8.5. インデクスを検索する

標準 SOLR 文法と回答オプションを使用して SOLR インデクスを検索することができる。 DataONE 検索インタフェイスは SOLR 検索エンジンを露出している。

http://mule1.dataone.org/ArchitectureDocs-current/apis/MN_APIs.html#MNQuery.query

例題と包括的な文法情報については SOLR の文書を見よ。

http://lucene.apache.org/solr/

8.6. アクセス方針の実施

検索しようとするユーザに読み取りが許可されているレコードだけが そのユーザに回答される、というのと同様に、インデクスにも アクセス制御は実施される。 提出されたあらゆる SOLOR 検索要求には、そのユーザの現在の認証状態に 応じたアクセス制御基準が付与される。 証明書ベース(DataONE API) および JSESSIONID ベース(Metacat API) の認証が同時に使用可能である。

8.7. インデクスをゼロから再生成する

SOLR インデクスが大幅に修正された時には、インデクスを完全に再生成する 必要があるかも知れない。それを実行するには...

手順の説明:

  1. solr-home ディレクトリを全部削除する
  2. Metacat 管理インタフェイスのメイン設定画面で、 solr-home ディレクトリを指定する
  3. アプリケーションコンテナ (Tomcat) を再起動する

Metacat API を使用して、インデクス再生成のために内容を送信することもできる。

  1. Metacat 管理者としてログインする
  2. <host>/<metacat_context>/metacat?action=reindex[&pid={pid}] にアクセスする
  3. pid を省略すると、Metacat 内のすべてのオブジェクトが再インデクスの 対象となる。

8.8. クラス設計の概要

_images/indexing-class-diagram.png

図 1. クラス設計の概要