Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


11.16.1 同義語検索を行うための準備をする

同義語検索を行う場合,ここで説明している準備作業を実施してください。

〈この項の構成〉

(1) テキストインデクスの定義を検討する

同義語検索を行う場合,テキストインデクスを使用すると性能向上が見込まれるため,テキストデータ(文書データ)を格納している列にテキストインデクスを定義することを推奨します。

■テキストインデクスを定義しても効果が見込めないケース

テキストデータ中の文字の種類が少ない場合は,テキストインデクスを定義しても性能向上が見込まれません。例えば,テキストデータが数字だけの場合が該当します。

また,同義語検索を行う際に指定する検索対象文字列が「a」や「0」などの単純で短い文字列の場合は,テキストインデクスを定義しても性能向上が見込まれません。場合によっては,テキストインデクスが使用されないこともあります。

テキストインデクスを定義する際の考慮点については,「5.4.1 テキストインデクスを定義する列を決めるときの考慮点」を参照してください。

■表記ゆれ補正検索との関係

同義語検索は,表記ゆれ補正検索と合わせて実行できます。同義語検索と表記ゆれ補正検索を合わせて実行する場合は,CREATE INDEX文でテキストインデクスを定義する際にCORRECTIONRULE(テキストインデクス表記ゆれ補正指定)を指定してください。

表記ゆれ補正検索については,「2.17.1 表記ゆれ補正検索」を参照してください。

表記ゆれ補正検索を適用するかどうかは,同義語検索を実行する際にスカラ関数CONTAINSの指定で選択できます。そのため,準備の段階で表記ゆれ補正検索を適用するかどうかが不明な場合は,表記ゆれ補正検索に対応するテキストインデクスを定義することを推奨します。

重要

HADBサーバで使用する文字コードがShift-JISの場合(環境変数ADBLANGの指定値がSJISの場合),表記ゆれ補正検索は実行できません。

なお,テキストインデクスを定義しなくても,同義語検索と表記ゆれ補正検索は実行できますが,性能の面から,テキストインデクスを定義することを推奨します。

■ワード検索との関係

同義語検索は,ワード検索と合わせて実行できます。同義語検索とワード検索を合わせて実行する場合は,CREATE INDEX文でテキストインデクスを定義する際,INDEXTYPETEXT WORDCONTEXTを指定してください(ワード検索用のテキストインデクスを定義してください)。

ワード検索については,「2.17.4 ワード検索」を参照してください。

ワード検索を適用するかどうかは,同義語検索を実行する際にスカラ関数CONTAINSの指定で選択できます。そのため,準備の段階でワード検索を適用するかどうかが不明な場合は,ワード検索用のテキストインデクスを定義することを推奨します。

なお,テキストインデクスを定義しなくても,同義語検索とワード検索は実行できますが,性能の面から,テキストインデクスを定義することを推奨します。

(2) テキストインデクスを定義する

テキストインデクスを定義する場合は,次に示す手順でテキストインデクスを定義してください。

手順
  1. CREATE INDEX文を実行して,テキストインデクスを定義する

  2. adbidxrebuildコマンドを実行して,テキストインデクスのインデクスデータを作成する

(3) 同義語辞書ファイルの格納ディレクトリに必要な容量を見積もる

同義語辞書を登録するadbsyndictコマンドを実行すると,同義語辞書の情報を格納した同義語辞書ファイルが作成されます。この同義語辞書ファイルを格納するディレクトリに必要な容量を見積もってください。同義語辞書ファイルの格納ディレクトリに必要な概算容量については,「11.16.12 同義語辞書ファイルの格納ディレクトリに必要な空き容量を確認する」を参照してください。

同義語辞書ファイルの格納ディレクトリに必要な容量を詳細に見積もる場合は,次の個所を参照してください。

上記の見積もり結果の合計サイズが,同義語辞書ファイルの格納ディレクトリに必要な容量になります。

重要

同義語辞書ファイルの格納ディレクトリの空き容量が不足した場合,同義語辞書ファイルの格納ディレクトリを変更する必要があります。同義語辞書ファイルの格納ディレクトリを変更すると,すべての同義語辞書を再登録する必要があるため,ディレクトリを作成しているディスクの容量不足などが発生しないように,見積もりを行ってください。

(4) 同義語辞書ファイルの格納ディレクトリを作成する

同義語辞書ファイルを格納するディレクトリを作成してください。性能の観点から,同義語辞書ファイルの格納ディレクトリだけを作成するファイルシステムを準備することを推奨します。

なお,同義語辞書ファイルの格納ディレクトリを作成する際,次の点に注意してください。

メモ

データベースのバックアップを取得する際,同義語辞書ファイルの格納ディレクトリもバックアップの取得対象になります。バックアップの取得方法については,「10.3 データベースのバックアップ」を参照してください。

(5) 同義語辞書ファイルの格納ディレクトリに対する権限を付与する

次に示す手順で,同義語辞書ファイルの格納ディレクトリに対して必要な権限を付与してください。

手順
  1. 同義語辞書ファイルの格納ディレクトリに,HADB管理者に対する読み取り権限,書き込み権限,および実行権限を付与する

  2. 同義語辞書ファイルの格納ディレクトリのパスに含まれるすべてのディレクトリに,HADB管理者に対する実行権限を付与する

(例)

同義語辞書ファイルの格納ディレクトリが/HADB/syndictの場合

  • /HADB/syndictには,読み取り権限,書き込み権限,および実行権限が必要です。

  • /,および/HADBには,実行権限が必要です。

(6) サーバ定義を修正する

サーバ定義のadb_syndict_storage_pathオペランドに,同義語辞書ファイルの格納ディレクトリ名を指定してください。adb_syndict_storage_pathオペランドについては,「7.2.8 同義語検索に関するオペランド(set形式)」のadb_syndict_storage_pathを参照してください。

adb_syndict_storage_pathオペランドに同義語辞書ファイルの格納ディレクトリのシンボリックリンクを指定した場合,シンボリックリンクを解決したあとの絶対パス名が,「(4) 同義語辞書ファイルの格納ディレクトリを作成する」で説明している規則に従っているかどうかがチェックされます。

メモ

サーバ定義の変更手順については,「8.5.2 サーバ定義の変更方法」を参照してください。

(7) 同義語一覧定義ファイルを作成する

同義語辞書に登録する同義語の一覧を記述したファイルを作成します。このファイルを同義語一覧定義ファイルといいます。同義語検索を行った場合,同義語一覧定義ファイルに記述された同義語が一括検索されます。

■同義語一覧定義ファイルの指定例
データベース,データバンク,database↓
アプリケーションサーバ,APサーバ,application server↓

(凡例)↓:改行

上記のように同義語一覧定義ファイルを作成した場合,「データベース」,「データバンク」,「database」のどれか1つを検索対象文字列に指定すると,「データベース」,「データバンク」,および「database」のすべての語句が検索対象文字列になります。

アプリケーションサーバ」,「APサーバ」,「application server」のどれか1つを検索対象文字列に指定すると,「アプリケーションサーバ」,「APサーバ」,および「application server」のすべての語句が検索対象文字列になります。

■同義語一覧定義ファイルの指定規則
  • 各同義語を「」で区切って記述します。

  • 一括検索の対象とする同義語を1行に記述します。1行に書いた同義語の集まりを同義語グループといいます。下記の例の場合,2つの同義語グループを指定しています。

    [図データ]

    メモ

    ここでは,同義語一覧定義ファイルの基本的な指定規則だけを説明しています。同義語一覧定義ファイルの指定規則の詳細については,「11.16.15 同義語一覧定義ファイルの指定規則」を参照してください。

この例では,同義語一覧定義ファイルを次のファイル名で保存したとします。

重要

ここで作成した同義語一覧定義ファイルは,同義語辞書に同義語を追加するときなどに使用するため,必ず保管しておいてください。

(8) 辞書情報登録ファイルを作成する

同義語辞書の辞書情報を指定したファイルを作成します。このファイルを辞書情報登録ファイルといいます。ここで作成した辞書情報登録ファイルを,同義語辞書を登録する際に実行するadbsyndictコマンドのオプション引数に指定します。

■辞書情報登録ファイルの指定例
Dictionary1,/home/adbmanager/dictionary1_synonym.txt,CORRECTIONRULE,DBとAPサーバの関連用語↓

(凡例)↓:改行

[説明]

辞書情報登録ファイル中には,次に示す4つの項目を指定します。各項目は,コンマ( , )で区切って指定してください。

  • 1列目

    同義語辞書名を指定します。

  • 2列目

    (7) 同義語一覧定義ファイルを作成する」で作成した同義語一覧定義ファイルの名称を指定します。

  • 3列目

    表記ゆれ補正オプションを指定します。表記ゆれ補正オプションには,表記ゆれ補正検索に対応する同義語辞書を作成するかどうかを指定します。次のどちらかを指定します。

    CORRECTIONRULE:表記ゆれ補正検索に対応する同義語辞書を作成する場合に指定します。

    CASESENSITIVE:表記ゆれ補正検索に対応しない同義語辞書を作成する場合に指定します。

  • 4列目

    同義語辞書に対するコメントを指定します。

メモ

ここでは,辞書情報登録ファイルの基本的な指定規則だけを説明しています。辞書情報登録ファイルの指定規則の詳細については,「11.16.16 辞書情報登録ファイルの指定規則」を参照してください。

この例では,辞書情報登録ファイルを次のファイル名で保存したとします。

重要

ここで作成した辞書情報登録ファイルは,同義語辞書に同義語を追加するときなどに使用するため,必ず保管しておいてください。

(9) 同義語辞書を登録する

adbsyndictコマンドを実行して同義語辞書を登録します。

コマンドの実行例

adbsyndict -m /home/adbmanager/dictionary1_information.txt
[説明]

-mオプションには,「(8) 辞書情報登録ファイルを作成する」で作成した辞書情報登録ファイルの絶対パス名を指定します。

メモ
  • 同義語辞書の登録が完了した場合,KFAA51509-Iメッセージが出力されます(登録を完了した同義語辞書の数だけメッセージが出力されます)。メッセージ中の同義語辞書名を確認し,同義語辞書の登録が完了したことを確認してください。

  • adbsyndictコマンドを実行すると,同義語辞書ファイルが作成されます。表記ゆれ補正検索に対応している同義語辞書の場合は,同義語辞書ファイルが3つ作成されます。表記ゆれ補正検索に対応していない同義語辞書の場合は,同義語辞書ファイルが1つだけ作成されます。

  • 同義語辞書ファイルの格納ディレクトリ下に作成される同義語辞書ファイルを,adbsyndictコマンド以外の方法で削除または更新しないでください。

(10) 同義語辞書ファイルの格納ディレクトリのバックアップを取得する

同義語辞書ファイルに障害が発生した場合に備えて,同義語辞書ファイルの格納ディレクトリのバックアップを取得してください。バックアップを取得しないと,同義語辞書ファイルに障害が発生した場合,同義語辞書ファイルをadbsyndictコマンドで再作成する必要があります。

同義語辞書ファイルの格納ディレクトリは,サーバ定義のadb_syndict_storage_pathオペランドに指定したディレクトリです。