全文検索のメンテナンス

全文検索のメンテナンスには、疑わしいレコードの修復、操作ログ ファイルのパージ、インデックスの最適化、Solr パフォーマンスの調整、スキーマ内の変更に対応するための構成の更新など、追加タスクが生じます。

疑わしいレコードの修復

レコード抽出プログラムをバッチ モードまたは更新モードで実行する場合、レコードの処理に失敗することが時折あります。その場合、レコード抽出プログラムは障害の発生したレコードに対応する修復ファイルを作成します。修復ファイルは ClearQuest 検索プロパティ ファイル CQ-db_name-dbset_name.xml があるディレクトリ (通常は Solr ホーム ディレクトリ) に書き込まれます。このディレクトリをモニタして障害の発生したプロセスのインスタンスを確認し、レコード抽出プログラムを修復モードで使用して疑わしいレコードを処理します。使用法については、cqtsdbcrawler 参照ヘルプをご覧ください。

操作ログのパージ

デフォルトでは、ユーザー データベースでは操作ログなし (oplog) パージが行われます。無駄なスペースを最小にするために oplog スクラブ ポリシーを実装する場合、oplog を恒久的に削除することがないよう注意が必要です。Oplog は、更新モードのレコード抽出プログラムが処理できるように十分な期間存続していなければなりません。更新モードのレコード抽出プログラムは長期間実行しないと、再開時には、処理されていなかった最も古い更新 oplog の処理から開始します。

ClearQuest MultiSite を実行している場合、全文検索 oplog スクラブ ポリシーは、既存の ClearQuest MultiSite oplog スクラブ ポリシーと比較してより積極的なものにはしないでください。

詳細については、oplog スクラブの ClearQuest Multisite ヘルプを参照してください。

トップに戻る

インデックスの最適化

新しい ClearQuest レコードが追加、修正、および削除されてゆくにつれ、Lucene インデックスは断片化し、パフォーマンスが低下する恐れがあります。

インデックスを最適化するには、以下のステップを実行します。
  1. ディレクトリを ClearQuest ホーム ディレクトリに変更します。
  2. コマンド プロンプトで、レコード抽出プログラムを最適化モードで実行します。
    cqperl cqtsdbcrawler.pl -optimize CQ-db_name-dbset_name.xml -site site_name

ClearQuest MultiSite を実行していない場合には、-site オプションを省略できます。 使用法については、cqtsdbcrawler 参照ヘルプをご覧ください。

トップに戻る

Solr パフォーマンスの調整

Solr 検索エンジンは ClearQuest パフォーマンスを下げることはありません。しかしパフォーマンスが悪くなっているように思われる場合には、前のセクションに記述されていたように、Lucene インデックスを最初に最適化してみます。また、Solr パフォーマンスを最適化するために以下の方法も考慮してください。

  • Java 仮想マシン (JVM) のメモリ割り振りを増やします。 Solr をデフォルトのメモリ割り振りで開始するのではなく、Xms512M および Xmx1024M を割り振ります。

    レコード抽出プログラムをバッチ モードで実行してから、リセットする場合には、一時的に JVM メモリ割り振りを増やす必要がある場合もあります。

  • Solr ホーム ディレクトリを高速の 2 次ハード ディスクに移動します。 検索エンジンは、特にインデックスが大規模な場合には、ハード ディスク、プロセッサ、およびメモリを集中的に使用します。Solr ホーム ディレクトリを 10,000 RPM でシーク時間の速い高速な 2 次ハード ディスクに移動すると、標準の 54,000 RPM ハード ディスクを使用する場合と比較してかなり Solr パフォーマンスが向上します。オペレーティング システム区画とは異なる区画を使用している場合であっても、パフォーマンスが向上する可能性があります。
  • サーバーの物理メモリ、プロセッサ数を増やし、クロック速度を上げます。
  • Solr 構成ファイル solrconfig.xml のパフォーマンス設定を調整します。 詳しくは、Solr Web サイトを参照してください。
  • インデックスを付けるレコード タイプと関連フィールドの数を減らします。
  • Solr を専用サーバーにインストールします。
  • Solr マスターおよびスレーブ構成を有効にします。 この構成は Lucene インデックスのデフォルト構成に比べて倍のディスク スペースを消費しますが、インデックスで厳しい要求が作成される場合であっても確実なパフォーマンスを提供します。
  • パフォーマンス調整のヒントをさらに得るには、Solr Web サイトをご覧ください。

トップに戻る

スキーマ変更への対応

データベース スキーマに変更を加える場合には、検索スキーマにも対応する変更が必要となる場合がよくあります。 以下のような例があります。
  • 新しいエンティティを追加する。 新しいエンティティが ClearQuest 全文検索を使用して検索可能にするタイプの登録可能なレコードの場合、ClearQuest 検索プロパティ ファイル CQ-db_name-dbset_name.xml と Solr スキーマ ファイル schema.xml を更新して、新しいレコード タイプに対応できるようにする必要があります。このためには、以前に実行した以下のステップを繰り返します。
    1. エンティティ ファイルを作成および編集します。
    2. ClearQuest 検索プロパティ ファイルを作成および編集します。
    3. Solr 検索ファイルを作成します。
    4. Solr スキーマ ファイル schema.xml を更新して Solr を再開し、インデックス付けするレコードを構成します。
    5. installutil setmasterpropertyfromfile サブコマンドを実行し、ClearQuest 検索プロパティ ファイル CQ-db_name-dbset_name.xml をユーザー データベースにアップロードします。

    更新モードのレコード抽出プログラムは、次にインデックス付けを行う際に更新済みの ClearQuest 検索プロパティ ファイルを使用します。

  • フィールドをエンティティに追加する。 新しいフィールドを登録可能なレコード タイプのエンティティに追加し、そのフィールドにインデックスを付ける場合には、新しいエンティティの追加の場合とまったく同じ手順を実行します。
  • エンティティを名前変更する。 ご使用の ClearQuest スキーマでエンティティを名前変更する場合には、新しいエンティティの追加の場合とまったく同じ手順を実行します。加えて、以下のステップを実行する必要があります。
    1. 名前変更したレコード タイプを再び以下のようにしてインデックス付けします。
      1. 名前変更されたレコード タイプだけが含まれる、新しい ClearQuest 検索プロパティ ファイルを作成します。
      2. レコード抽出プログラムをバッチ モードで実行します (cqperl cqtsdbcrawler.pl -batch)。
    2. 以下の Solr コマンドを発行して、古いエンティティ名に属するすべてのレコード タイプを削除します。
      Windows の場合
      1. cd %SOLR_HOME%¥yourSchemaName¥Solr¥exampledocs¥
      2. java -Ddata=args -jar post.jar "<delete><query>record_type:recordTypeName</query></delete>"
      UNIX システムおよび Linux の場合
      1. cd $SOLR_HOME/yourSchemaName/Solr/exampledocs/
      2. java -Ddata=args -jar post.jar "<delete><query>record_type:record_type</query></delete>"
  • エンティティのフィールドを名前変更する。ご使用の ClearQuest スキーマでエンティティのフィールドを名前変更する場合には、エンティティの名前変更の場合とまったく同じ手順を実行します。

トップに戻る


フィードバック