Hitachi

HiRDB 全文検索プラグイン HiRDB Text Search Plug-in Version 10


2.7.4 インデクスの定義

インデクスデータを作成してデータを登録します。データ登録後にCREATE INDEXを実行すると,登録済みの文字列データからIXFREEWORDインデクスが一括作成されます。

文字列検索プラグインでのインデクスの作成には,通常のインデクス定義,および文書の登録・更新時のインデクス作成方法の定義があります。各定義方法について次に説明します。

〈この項の構成〉

(1) 通常のインデクス定義

全文検索用のインデクス作成情報を定義するには,定義系SQLのCREATE INDEXを使用します。この定義をすることで,全文検索機能が使用できるようになります。

CREATE INDEXのインデクス型識別子にはIXFREEWORDと指定してください。また,RDエリア名には,「2.7.2 データ格納領域の確保」でIXFREEWORDインデクス情報の格納領域として確保したRDエリアを指定してください。IXFREEWORDプラグインで使用するインデクスのRDエリアは,ログ取得モードとなります。CREATE INDEXの詳細については,マニュアル「HiRDB SQLリファレンス」を参照してください。

なお,CREATE INDEX実行時に指定するプラグインオプションには複数の定義が指定できます。

(例)

複数の定義を指定する場合は,次のように定義ごとに,(半角コンマ)で区切って指定します。

PLUGIN '定義,定義,定義,…'

インデクスの定義例を次の図に示します。

図2‒46 全文検索機能使用時のインデクス定義例

[図データ]

(2) インデクスファイル自動拡張機能のインデクス定義

インデクスファイル自動拡張機能を使用すると,インデクスファイル作成時の空き領域を,各論理ファイルの拡張領域として使用できるようになります。これによってRDエリアを有効利用できますので,インデクスファイル自動拡張機能の使用をお勧めします。この機能を使用する場合は,プラグインオプションに次の定義が必要です。

PLUGIN 'FLEX_AREA'

この機能を使用すると自動的にインデクスが拡張するため,インデクスの拡張ユティリティを実行する必要はありません。この機能を利用した場合にインデクスの拡張ユティリティを実行したときは,無視されます。

インデクスファイル自動拡張機能使用時のインデクス定義例を,次の図に示します。

図2‒47 インデクスファイル自動拡張機能使用時のインデクス定義例

[図データ]

(3) 大小文字・全角文字半角文字統一機能のインデクス定義

大文字と小文字,または全角文字と半角文字の違いを区別しないで検索を実行したい場合には,大小文字・全角文字半角文字統一機能を使用します。

(a) 大小文字・全角文字半角文字統一機能の定義方法

大小文字・全角文字半角文字統一機能を使用する場合には,CREATE INDEXのプラグインオプションに対して次の表に示す内容を定義します。

表2‒14 定義内容

定義内容

説明

SAMECASE=ON

英大文字と英小文字を区別しないでインデクスを作成します。

SAMEWIDE=ON

全角文字と半角文字の英数字,カタカナ,記号を区別しないでインデクスを作成します。

注※

半角の英字で記述します。SAMECASEとSAMEWIDEを組み合わせて指定できます。

大小文字・全角文字半角文字統一機能使用時のインデクス定義例を図2-48図2-49図2-50に示します。

図2‒48 大小文字統一機能使用時のインデクス定義例

[図データ]

図2‒49 全角文字半角文字統一機能使用時のインデクス定義例

[図データ]

図2‒50 大小文字統一機能,および全角文字半角文字統一機能使用時のインデクス定義例

[図データ]

(b) 大小文字・全角文字半角文字統一機能使用時の注意

  • 同義語展開指定をする場合,あらかじめText Search Plug-in 02-01以降のバージョンで同義語辞書を作成するか,または同義語辞書移行ユティリティを使用して,既存の同義語辞書を移行する必要があります。同義語辞書移行ユティリティの詳細については,「3.3.3 phcsyndicconv(同義語辞書移行ユティリティ)」を参照してください。

  • 02-01より前のバージョンで作成した同義語辞書を使用した場合,同義語異表記展開を指定しても同義語辞書に登録した同義語で検索できない場合があります。

  • 全角文字半角文字統一機能を指定しないで,近傍条件検索やワイルドカードに"?"を指定した検索を実行した場合,半角文字のガ行,ザ行,ダ行,バ行,パ行,およびヴを2文字として扱います。しかし,全角文字半角文字統一機能を指定した場合は1文字として扱うため注意が必要です。

  • 必ず異表記展開する運用であれば,インデクスの文字統一機能を使用することを推奨します。

(4) 拗音統一機能のインデクス定義

検索時に「や」と「ゃ」,「よ」と「ょ」などの拗音を区別しないようにするには,拗音統一機能を使用します。

(a) 拗音統一機能の定義方法

拗音統一機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。

PLUGIN 'SAMEY=ON'

拗音統一機能を使用する場合の,インデクスの定義例を次の図に示します。

図2‒51 拗音統一機能使用時のインデクス定義例

[図データ]

「SAMEY=ON」を指定すると,次の拗音などが統一されます。

[図データ]

(b) 拗音統一機能使用時の注意

  • 同義語展開指定をする場合,あらかじめText Search Plug-in 02-01以降のバージョンで同義語辞書を作成するか,または同義語辞書移行ユティリティを使用して,既存の同義語辞書を移行する必要があります。同義語辞書移行ユティリティの詳細については,「3.3.3 phcsyndicconv(同義語辞書移行ユティリティ)」を参照してください。

  • 02-01より前のバージョンで作成した同義語辞書を使用した場合,同義語異表記展開を指定しても同義語辞書に登録した同義語で検索できない場合があります。

(5) 濁音統一機能のインデクス定義

検索時に「バ」と「ハ゛」,「ぱ」や「は゜」のように濁音や半濁音を区別しないようにするには,濁音統一機能を使用します。

(a) 濁音統一機能の定義方法

濁音統一機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。

PLUGIN 'SAMED=ON'

濁音統一機能を使用する場合の,インデクスの定義例を次の図に示します。

図2‒52 濁音統一機能使用時のインデクス定義例

[図データ]

「SAMED=ON」を指定すると,濁音,半濁音が統一されます。

(b) 濁音統一機能使用時の注意

  • 同義語展開指定をする場合,あらかじめText Search Plug-in 02-01以降のバージョンで同義語辞書を作成するか,または同義語辞書移行ユティリティを実行して,既存の同義語辞書を移行する必要があります。同義語辞書移行ユティリティの詳細については,「3.3.3 phcsyndicconv(同義語辞書移行ユティリティ)」を参照してください。

  • 02-01より前のバージョンで作成した同義語辞書を使用した場合,同義語異表記展開を指定しても同義語辞書に登録した同義語で検索できない場合があります。

  • 濁音統一機能を指定しないで,近傍条件検索やワイルドカードに"?"を指定した検索を実行した場合,半角文字の濁音で表示できる文字を2文字として扱います。しかし,濁音統一機能を指定した場合は1文字として扱うため注意が必要です。

(6) 削除文字指定機能のインデクス定義

検索に使用しない文字を除いて検索性を向上させるには,削除文字指定機能を使用します。

(a) 削除文字指定機能の定義方法

削除文字指定機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。

PLUGIN 'DELcode=ON'

削除文字指定機能を使用する場合の,インデクスの定義例を次の図に示します。

図2‒53 削除文字指定機能使用時のインデクス定義例

[図データ]

「DELcode=ON」を指定すると,次の文字が削除されます。

全角文字の "。"(句点),"、"(読点),全角スペース,

半角文字の "。"(句点),"、"(読点),半角スペース(0x20),

改行コード(0x0a,0x0d),タブコード(0x09)

(b) 削除文字指定機能使用時の注意

  • 近傍検索で指定された語句リストの間に削除文字が含まれる場合,距離の指定方法によってはヒットしないことがあります。

    例えば,登録データが「COMPUTER△NETWORK」の場合,"COMPUTER"と"NETWORK"の間の距離は0となります。

  • 削除文字を指定したインデクスに対して検索する場合,登録データから削除文字が取り除かれていることに注意してください。

  • 検索タームおよびすべての異表記展開・同義語異表記展開結果が,削除文字だけで構成されている場合,0件ヒットとなります。

(7) 文字単位インデクス作成機能使用時のインデクス定義

インデクス容量を削減する方法として,1文字ずつインデクスを作成することができます。この機能を文字単位インデクス(1gramインデクス)作成機能といいます。

(a) 文字単位インデクス作成機能の定義方法

文字単位インデクス作成機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義の追加が必要です。

PLUGIN 'INDEX_GRAM1'

文字単位インデクス作成機能を使用する場合の,インデクスの定義例を次の図に示します。

図2‒54 文字単位インデクス作成機能使用時のインデクス定義例

[図データ]

(b) 文字単位インデクス作成機能使用時の注意事項

  • 文字単位インデクス作成機能は,次の機能と同時に指定することはできません。

    • 概念検索用インデクスの作成

    • インデクス作成ルール追加機能の使用

  • 文字単位インデクスだけ作成した場合,インデクス容量が削減される反面,登録データの増加に伴い,検索性能が低下します。このため,大量データを登録する運用にこの機能を適用する場合は注意が必要です。

(8) インデクス作成方法指定

表のFREEWORD型列に文字列データを登録している状態でCREATE INDEXを実行する場合,CREATE INDEX実行時にインデクス作成とインデクスへの文字列データ登録を実行する方法(即時登録)か,CREATE INDEX実行時にはインデクスに反映しないで文書やデータの登録だけを実行し,インデクス作成開始ユティリティを使用してインデクスへの文字列データ登録を実行する方法(初期分割登録または分割遅延登録)のどちらかのインデクス作成方法を指定できます。インデクス作成開始ユティリティの詳細については,「3.3.9 phxstartidx(インデクス作成開始ユティリティ)」を参照してください。運用形態に合わせて指定してください。

(a) インデクス作成方法指定の定義方法

インデクス作成方法指定を使用する場合,CREATE INDEXのプラグインオプションに即時登録,初期分割登録,または分割遅延登録の定義を追加します。インデクス作成方法指定の定義を省略した場合,即時登録が適用されます。

即時登録

表に登録されている文字列データについて,CREATE INDEX実行時にインデクス作成とインデクスへの文字列データ登録を実行します。

即時登録を使用する場合,CREATE INDEXのプラグインオプションに次の定義を追加,または省略します。

PLUGIN 'CREATEMODE=0'
初期分割登録

表に登録されている文字列データについて,CREATE INDEX実行時にはインデクスへ反映しません。インデクス作成開始ユティリティを使用してインデクスへの文字列データ登録を実行します。インデクス作成開始ユティリティの詳細については,「3.3.9 phxstartidx(インデクス作成開始ユティリティ)」を参照してください。

初期分割登録を使用する場合,CREATE INDEXのプラグインオプションに次の定義を追加します。

PLUGIN 'CREATEMODE=1'

初期分割登録使用時のインデクスの定義例を次の図に示します。

図2‒55 初期分割登録使用時のインデクス定義例

[図データ]

分割遅延登録

表に登録されている文字列データについて,CREATE INDEX実行時にはインデクスへ反映しません。インデクス作成開始ユティリティを使用してインデクスへの文字列データ登録を実行します。インデクス作成開始ユティリティの詳細については,「3.3.9 phxstartidx(インデクス作成開始ユティリティ)」を参照してください。

また,分割遅延登録を使用する場合,インデクス分割遅延登録用の領域が必要となります。

分割遅延登録を使用する場合,CREATE INDEXのプラグインオプションに次の定義を追加します。

PLUGIN 'CREATEMODE=2, DELAY_SIZE=インデクス分割遅延登録用領域サイズ(キロバイト)'

インデクス分割遅延登録用領域サイズの見積もりについては,「2.3.2(2)(b) ユーザLOB用RDエリア容量」を参照してください。また,分割遅延登録を設定していないインデクスに対しては,インデクス情報変更ユティリティを使用することで分割遅延登録を設定したインデクスに移行できます。インデクス情報変更ユティリティの詳細については,「3.3.11 phxmodidx(インデクス情報変更ユティリティ)」を参照してください。指定できる最大値・最小値は次のとおりです。

  • 最大値:129,584キロバイト

  • 最小値:2,608キロバイト

分割遅延登録時のインデクスの定義例を次の図に示します。

図2‒56 分割遅延登録使用時のインデクス定義例

[図データ]

分割遅延登録への移行時に実行する,インデクス情報変更ユティリティの指定例を次の図に示します。

図2‒57 分割遅延登録への移行時に実行する,インデクス情報変更ユティリティの指定例

[図データ]

分割遅延登録・更新系SQL同時実行

分割遅延登録実行時に,同時にインデクス作成開始ユティリティを使用してインデクスへ文字列データを登録します。インデクス作成開始ユティリティの詳細については,「3.3.9 phxstartidx(インデクス作成開始ユティリティ)」を参照してください。分割遅延登録・更新系SQL同時実行を使用する場合,分割遅延登録時に情報を退避しておく領域が必要です。CREATE INDEXのプラグインオプションに次の定義を追加します。

PLUGIN 'CREATEMODE=3,DELAY_SIZE=分割遅延登録時に情報を退避する領域サイズ(キロバイト)'

分割遅延登録時に情報を退避する領域サイズの見積もりについては,「2.3.2(2)(b) ユーザLOB用RDエリア容量」を参照してください。

この退避領域に指定できる最大値・最小値は次のとおりです。

  • 最大値:129,584キロバイト

  • 最小値:12,832キロバイト

分割遅延登録・更新系SQL同時実行のインデクスの定義例を次の図に示します。

図2‒58 分割遅延登録・更新系SQL同時実行のインデクスの定義例

[図データ]

(b) 初期分割登録・分割遅延登録使用時の注意

  • CREATE INDEX実行後,インデクスへ登録されていない文字列データのインデクスは,インデクス作成開始ユティリティを使用して登録してください。インデクス作成開始ユティリティの詳細については,「3.3.9 phxstartidx(インデクス作成開始ユティリティ)」を参照してください。インデクスへ登録されていない文字列データが存在するかどうかは,インデクス情報の取得ユティリティを使用して確認してください。インデクス情報の取得ユティリティの詳細については,「3.3.5 phxidxls(インデクス情報の取得ユティリティ)」を参照してください。

  • インデクスへ登録されていない文字列データは,検索対象になりません。

  • インデクスへ登録されていない文字列データが存在する場合,登録または更新した文字列データはインデクスへ登録されません。インデクスへ登録する場合は,インデクス作成開始ユティリティを使用してください。インデクス作成開始ユティリティの詳細については,「3.3.9 phxstartidx(インデクス作成開始ユティリティ)」を参照してください。

  • インデクスが作成されていない文字列データが存在する場合,検索を実行しても,インデクスが作成されていない旨のメッセージは出力されません。

  • 初期分割登録の場合,CREATE INDEX実行後,インデクス作成開始ユティリティを実行して,すべての文字列データがインデクスへ登録された時点で,インデクス作成方法が初期分割登録から即時登録に切り替わります。以降,文字列データの登録または更新と同時にインデクスへの登録が行われるようになるため,文字列データの登録または更新時にインデクスへ登録する時間が掛かるようになります。

  • インデクス情報変更ユティリティで移行したインデクスに対して初期化をした場合,変更した情報は無効になります。インデクス情報変更ユティリティの詳細については,「3.3.11 phxmodidx(インデクス情報変更ユティリティ)」を参照してください。

  • インデクス分割遅延登録用領域を使い切った場合は,遅延しているすべての文書をインデクスに反映するか,またはインデクス情報変更ユティリティを使用してインデクス分割遅延登録用領域を拡張してください。インデクス情報変更ユティリティの詳細については,「3.3.11 phxmodidx(インデクス情報変更ユティリティ)」を参照してください。

  • 分割遅延登録・更新系SQL同時実行をしない運用へ移行する場合,インデクスを削除してください。そのあと,運用に合わせてインデクスを再定義してください。

  • 分割遅延登録・更新系SQL同時実行を行う運用にする場合,次の機能が実行できません。

    • 初期分割登録(CREATEMODE=1)

    • 時間指定でのインデクス作成

    • 遅延/即時の切り替え(phxdelay)

    • phxmodidxコマンドによるCREATEMODE=3への移行

  • 分割遅延登録・更新系SQL同時実行の場合,削除要求も即時反映しないため,UPDATEやDELETE後にINSERTを実行し,インデクスに反映する前に検索すると古い情報でインデクス未反映文書がヒットするときがあります。

(9) UCS4のインデクス定義

UCS2の範囲を超えるUCS4の範囲の文字を使用するには,UCS4用の定義が必要になります。

(a) インデクスの指定

UCS2の範囲を超えるUCS4の範囲の文字を使用する場合は,プラグインオプションに次の定義の追加が必要です。

PLUGIN 'INDEX_UCS4'

(b) インデクス定義時の注意

  • UCS4用のインデクス定義の追加をしていない状態でUCS2の範囲を超える文字を登録した場合は,該当文字は無視されます。

  • UCS4用のインデクス定義の追加をしていない状態でUCS2の範囲を超える文字を検索した場合は,エラーとなります。

  • HiRDBの文字コード種別がutf-8以外の時にINDEX_UCS4を指定した場合は,インデクス定義はエラーとなります。

  • 以下のプラグインオプションはINDEX_UCS4と同時に指定することができません。

    • 英文インデクス(ENGLISH,ENGLISH_STANDARD)

(c) UCS2からUCS4への移行

UCS2とUCS4はインデクスの構成が異なるため,UCS2用のインデクスをそのままUCS4用のインデクスとして使用することはできません。

UCS2用のインデクスをUCS4用として使用する場合は,インデクス情報変更ユティリティで変更項目に"INDEX_TYPE=UCS4"を指定して移行してください。インデクス情報変更ユティリティの詳細については,「3.3.11 phxmodidx(インデクス情報変更ユティリティ)」を参照してください。

移行する前のインデクスに次の機能が指定されている場合は,移行コマンド実行時にエラーとなります。

  • 英文インデクス(ENGLISH,ENGLISH_STANDARD)

  • データベースの文字コード種別がutf-8ではないデータベースの環境

(10) 英文検索機能のインデクス定義

英文に対して検索する場合は,単語単位で検索する英文インデクス定義をしてください。

英文インデクスの定義は次の方法があります。運用に応じてご使用ください。

注意事項

英文インデクス定義は,次のインデクス定義と併用することはできません。

  • 全角文字半角文字統一機能(SAMEWIDE=ON)

  • 拗音統一機能(SAMEY=ON)

  • 文字単位インデクス作成機能(INDEX_GRAM1)

(a) 英文検索のインデクスに指定できる項目

英文検索機能で使用するインデクスの定義ファイルについて説明します。

インデクスデリミタファイル
機能

英文検索機能で使用するインデクスを作成する場合に必要な単語の区切り(デリミタ)を定義します。定義したインデクスデリミタに従って単語を抽出し,英文検索機能で使用するインデクスを作成します。抽出した単語が64文字(バイト)を超える場合は,65文字(バイト)目以降を無視して,64文字(バイト)目までの文字でインデクスを作成します。なお,インデクスデリミタは検索対象にできません。

指定形式

CREATE INDEXのプラグインオプションにインデクスデリミタファイルのファイル名を指定します。

INDEXdlmt=ファイル名

インデクスデリミタファイルは,CREATE INDEXを実行する前に,Text Search Plug-inをセットアップしたすべてのサーバマシンに対して,同一の内容で次に示すディレクトリに事前に作成しておく必要があります。

$PDDIR/plugin/_phxfwrd/idx_def

また,サンプルファイル($PDDIR/plugin/_phxfwrd/sample/pdplgdlmt)を提供しています。

記述形式

"インデクスデリミタ" [,"インデクスデリミタ"]・・・・・・・

  • インデクスデリミタは,"(半角ダブルクォーテーション)で囲んで指定します。

  • インデクスデリミタに使用できる文字は,'0x21'〜'0x7E'の範囲の1バイト文字コードです。

  • '0x20'(半角スペース),'0x09'(タブ)は,無条件にインデクスデリミタとなります。

  • 複数指定する場合は,"(半角ダブルクォーテーション)で囲んだインデクスデリミタを,(半角コンマ)で区切って指定します。

  • "(半角ダブルクォーテーション)をインデクスデリミタにする場合は,""と二つ続けて定義し,それを"(半角ダブルクォーテーション)で囲んで指定します。

注意事項
  • インデクスデリミタファイルは省略できます。

  • 省略した場合は,'0x20'(半角スペース),'0x09'(タブ),記号「'0x21'〜'0x2F','0x3A'〜'0x40','0x5B'〜'0x60','0x7B'〜'0x7E'」がインデクスデリミタとなります。

  • 不要語,または削除コードに指定した文字コードをインデクスデリミタに指定しないでください。指定した場合は,インデクスデリミタ,削除コード,不要語,の優先順位で処理します。

不要語ファイル
機能

英文検索機能に使用するインデクスを作成する場合,検索に不要な単語を定義します。不要語については,検索用インデクスを作成しません。

指定形式

CREATE INDEXのプラグインオプションに不要語ファイルのファイル名を指定します。

NOindex=ファイル名

不要語ファイルは,CREATE INDEXを実行する前に,Text Search Plug-inをセットアップしたすべてのサーバマシンに対して,同一の内容で次のディレクトリに事前に作成しておく必要があります。

$PDDIR/plugin/_phxfwrd/idx_def
記述形式

["不要語" [,"不要語"]・・・・・・]

  • 不要語は,"(半角ダブルクォーテーション)で囲んで指定します。

  • 不要語に使用できる文字は,'0x21'〜'0x7E'の範囲1バイトの文字コードです。

  • 複数指定する場合は,"(半角ダブルクォーテーション)で囲んだ不要語を,(半角コンマ)で区切って指定します。不要語は255個まで指定できます。

  • "(半角ダブルクォーテーション)を不要語にする場合は,""と二つ続けて定義し,それを"(半角ダブルクォーテーション)で囲んで指定します。

  • 不要語は64文字(バイト)まで指定できます。64文字(バイト)を超えて指定した場合,65文字(バイト)目以降を無視して,64文字(バイト)目までの文字列を不要語とします。

注意事項
  • 不要語ファイルは省略できます。省略した場合は,不要語なしでインデクスを作成します。

  • インデクスデリミタ,または削除コードに指定した文字コードを不要語に指定しないようにしてください。指定した場合は,インデクスデリミタ,削除コード,不要語の優先順位で処理します。

  • 検索条件で指定した検索タームに不要語を含む場合は,不要語を任意の1単語とみなして検索します。なお,検索条件に不要語だけを指定した場合は,入力条件エラーとなります。

削除コードファイル
機能

英文検索機能で使用するインデクスを作成する場合に,削除するコードを定義します。定義した削除コードはないものとして単語を抽出し,英文検索機能で使用するインデクスを作成します。

単語に-(ハイフン)のような不要なコードがある場合,削除してその前後を詰めて扱い,必要なコードだけでインデクスを作成できます。

指定形式

CREATE INDEXのプラグインオプションに削除コードファイルのファイル名を指定します。

DELcode=ファイル名

削除コードファイルは,CREATE INDEXを実行する前に,Text Search Plug-inをセットアップしたすべてのサーバマシンに対して,同じ内容で次のディレクトリに事前に作成しておく必要があります。

$PDDIR/plugin/_phxfwrd/idx_def
記述形式

["削除コード" [,”削除コード”]・・・・・・]

  • 削除コードは,"(半角ダブルクォーテーション)で囲んで指定します。

  • 削除コードに使用できる文字は,'0x21'〜'0x7E'の範囲の1バイト文字コードです。

  • 複数指定する場合は,"(半角ダブルクォーテーション)で囲んだ削除コードを,(半角コンマ)で区切って指定します。

  • "(半角ダブルクォーテーション)を削除コードにする場合は,""と二つ続けて定義し,それを"(半角ダブルクォーテーション)で囲んで指定します。

注意事項
  • 削除コードファイルは省略できます。省略した場合は,削除コードなしでインデクスを作成します。

  • インデクスデリミタ,または不要語に指定した文字コードを削除コードに指定しないようにしてください。指定した場合は,インデクスデリミタ,削除コード,不要語,の優先順位で処理します。

(11) 登録件数指定

本製品が推奨する文字列データサイズ(255バイト)より小さい文字列データを大量にIXFREEWORDインデクス型プラグインに登録する場合,登録文字列データ数を管理する領域を拡張することがあります。その際にはphxidxlsコマンドで表示されるインデクス情報の“Available Work Area Size”で示される領域を使用するため,この領域が不足するとRDエリア不足となり,RDエリアを追加する必要があります。本機能では,あらかじめユーザが最終目標とする文字列データ数を管理できる領域を確保し,前記の弊害をなくすことを目的としています。

登録件数指定を指定してIXFREEWORDインデクスを作成する場合には,CREATE INDEXのプラグインオプションに次の定義を追加します。

PLUGIN ‘DOC_COUNT=登録件数(件)’

登録件数に指定できる最大値・最小値は次のとおりです。

登録件数指定を省略した場合は,次の(a)(b)の大きい方の値がデフォルト値となります。

(a)40,960件

(b)インデクス作成時のn-gramインデクス情報格納用RDエリア容量(バイト)/(100×32)件
図2‒60 登録件数指定のインデクス定義例

[図データ]

注意事項
  • 表分割される場合は,各分割表ごとに指定された文字列データ数が登録可能となります。

    例えば,“DOC_COUNT=1000000”を表A(分割表A1/A2/A3の3分割表)のインデクス作成時に指定した場合,各分割表ごとに1,000,000件のインデクスが作成できるので,表Aのインデクスとしては3,000,000件登録できます。

  • UPDATE/DELETEによって無効となった文字列データも管理データとしては残ります。

    例えば,10件登録後に5件削除した場合,管理上は10件分の管理領域を必要とします。

    また,10件登録後に5件更新した場合,5件削除後に5件追加する処理を行うため,15件分の管理領域が必要となります。このような無効領域を解消するためには,インデクス再作成や表の再編成を行ってください。

  • 登録件数がDOC_COUNTに指定した文字列データ数を超えた場合,“Available Work Area Size”に空き容量がある限りは管理領域を拡張して登録を行います。

(12) 統制ルール指定機能のインデクス定義

ユーザが指定した2〜3バイトの文字を統制するには,統制ルール指定機能を使用します。

指定形式

CREATE INDEXのプラグインオプションに,統制ルールファイル名を定義します。

PLUGIN 'SAMERULE=ファイル名'または
 
PLUGIN 'SAMERULE2=ファイル名'

SAMERULEに指定した場合は,ほかの文字統一機能よりも優先されます。SAMERULE2に指定した場合は,ほかの文字統一を実施したあとに,この機能で定義した統制を行います。また,統制ファイルは,CREATE INDEXを実行する前に,次のディレクトリに事前に作成しておく必要があります。

UNIXの場合
$PDDIR/plugin/_phxfwrd/idx_def
Windowsの場合
%PDDIR%\plugin\_phxfwrd\idx_def
記述形式
統制文字,統制される文字,・・・
統制文字,統制される文字,・・・
  • 一つの統制グループを一行で記述してください。

  • 2〜3バイト文字の1文字を半角コンマで区切って二つ以上指定し,統制文字を先頭に指定してください。

注意事項
  • ルールファイルに指定する文字のコードはHiRDBの文字コードに合わせてください。

  • ルールファイル名は最大256バイトです。

  • 英文インデクスまたはHiRDBの文字コードがutf-8の場合,概念インデクスに対して指定するとエラーになります。

  • SAMERULEとSAMERULE2は同時に指定できません。

  • 一行は4,093バイト以内(改行コード含む)で指定してください。

  • 先頭文字が半角の”#”で始まる行はコメント行として扱います。

  • 空行は無視します。

  • インデクス作成後は統制ルール情報を変更できません。インデクス作成後にルールファイルの内容を変更してもインデクスには反映されません。

  • 統制文字と統制される文字を指定する場合,エラーになるケースを次に示します。

    ・改行,半角コンマ,および2〜3バイトの文字以外を指定した場合

    ・統制される文字に,重複して同じ文字を指定した場合

    ・統制文字に,統制される文字を指定した場合

  • 同義語展開指定をする場合,新規に同義語辞書を作成するか,同義語辞書移行ユティリティを実行して,既存の同義語辞書を移行する必要があります。同義語辞書を作成する方法は,「3.3.1 phcsyndicreg(同義語辞書登録ユティリティ)」を参照してください。同義語辞書を移行する方法は,「3.3.3 phcsyndicconv(同義語辞書移行ユティリティ)」を参照してください。

  • extracts関数でハイライトタグを埋め込む場合,ハイライト位置条件式に指定する検索タームは文字統一の対象になりません。データを登録したときの文字で指定してください。

(13) ひらがなカタカナ統一機能のインデクス定義

検索時にひらがなとカタカナを区別しないようにするには,ひらがなカタカナ統一機能を使用します。

(a) ひらがなカタカナ統一機能の定義方法

ひらがなカタカナ統一機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。

PLUGIN 'SAMEK=ON'

ひらがなカタカナ統一機能を使用する場合の,インデクスの定義例を次の図に示します。

図2‒61 ひらがなカタカナ統一機能使用時のインデクス定義例

[図データ]

「SAMEK=ON」を指定すると,ひらがなとカタカナが統一されます。

(b) ひらがなカタカナ統一機能使用時の注意

  • 同義語展開指定をする場合,あらかじめバージョン09-02以降のText Search Plug-inで同義語辞書を作成するか,または同義語辞書移行ユティリティを実行して,既存の同義語辞書を移行する必要があります。

  • ひらがなの検索でもカタカナ異表記,カタカナ長音ハイフン展開,カタカナベーシック展開およびカタカナ拗音展開が有効となります。ただし,ひらがな拗音展開は無効となります。

(14) 検索高速化インデクス(V2)機能のインデクス定義

検索を高速化するためには,検索高速化インデクス(V2)機能を使用します。

検索高速化インデクス(V2)機能を使用すると,通常のインデクスよりも検索時のインデクス参照量が少なくなります。次の隣接照合や論理演算を含む検索,および絞込み検索に対してこの機能を使うと効果的です。

なお,検索高速化インデクス(V2)機能を使う場合,通常のインデクスと比べてメモリ使用量,RDエリアの容量,ファイル容量,および適用される環境定義などが異なります。この機能を使用する前に,それぞれの設定を確認してください。

(a) 検索高速化インデクス(V2)機能の定義方法

検索高速化インデクス(V2)機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。

PLUGIN 'INDEX_V2'

検索高速化インデクス(V2)機能を使用する場合の,インデクスの定義例を次の図に示します。

図2‒62 検索高速化インデクス(V2)機能使用時のインデクス定義例

[図データ]

検索高速化インデクス(V2)機能を使用した場合,指定できないプラグインオプション,およびデフォルトで適用されるプラグインオプションがあります。次の表に示します。

表2‒15 検索高速化インデクス(V2)機能使用時に指定できないプラグインオプション

定義文字列

定義の説明

検索高速化インデクス(V2)機能使用時の指定可否

FLEX_AREA

インデクスファイル自動拡張機能のインデクス定義

※1

INDEX_GRAM1

文字単位インデクス作成機能のインデクス定義

×

INDEX_UCS4

UCS4の範囲の文字を使用する場合のインデクスの定義

※2

ENGLISH

英文インデクスの定義(単語一致)

ENGLISH_STANDARD

英文インデクスの定義(単語一致,前方一致)

INDEXdlmt

英文インデクスのデリミタ指定

NOindex

英文インデクスの不要語指定

DOC_COUNT

登録件数指定

(凡例)

△:指定が無視されます。

×:指定するとエラーになります。

▲:バージョン09-05以降は指定できます。09-05より前は指定するとエラーになります。

注※1

デフォルト値として適用されます。

注※2

HiRDBの文字コードがUTF-8の場合はデフォルトでINDEX_UCS4を適用します。

(b) 検索高速化インデクス(V2)機能使用時の注意

  • 次のユティリティは使用できません。

    • phxincmt(インデクスのインクリメンタル)

    • phxmerge(インデクスのマージ)

    • phxexpnd(インデクスの拡張)

    • phxcond(インデクス詰め替え)

  • phxmodidxユティリティのUCS4用インデクスへの移行機能は使用できません。

(15) カタカナ異表記統一機能のインデクス定義

カタカナ異表記を区別しないようにするには,カタカナ異表記統一機能を使用します。カタカナ異表記統一機能を使用すると,特定のカタカナを区別しないでインデクスが作成できます。

カタカナ異表記統一機能で置き換えられる文字を次に示します。

表2‒16 カタカナ異表記統一機能で置き換えられる文字

置き換え前の文字

置き換え後の文字

ツィ

ヴァ

ヴィ

ヴェ

ヴォ

テュ

チュ

フュ

ヒュ

ヴュ

ビュ

(a) カタカナ異表記統一機能の定義方法

カタカナ異表記統一機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。

PLUGIN 'SAMEE=ON'
図2‒63 カタカナ異表記統一機能使用時のインデクス定義例

[図データ]

「SAMEE=ON」を指定すると,カタカナ異表記が統一されます。

(b) カタカナ異表記統一機能使用時の注意

  • 同義語展開指定をする場合,あらかじめバージョン09-04以降のText Search Plug-inで同義語辞書を作成するか,または同義語辞書移行ユティリティを実行して,既存の同義語辞書を移行する必要があります。

  • extracts関数でハイライトタグを埋め込む場合,ハイライト位置条件式に指定する検索タームは文字統一の対象になりません。データを登録した時の文字で指定してください。extracts関数については,「4.2.6 extracts」を参照してください。

(16) IVS対応機能のインデクス定義

UnicodeのIVS(Ideographic Variation Sequence)に対応する場合,次のどちらかの方法を指定できます。運用形態に合わせて指定してください。

(a) IVS対応機能の定義方法

IVSに対応する場合,CREATE INDEXのプラグインオプションにVS識別モード,またはVS無効化モードの定義を追加します。

VS識別モード

VS識別モードを使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。

PLUGIN 'IVSMODE=1'

VS識別モードを使用する場合の,インデクスの定義例を次の図に示します。

図2‒64 VS識別モード使用時のインデクス定義例

[図データ]

VS無効化モード

VS無効化モードを使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。

PLUGIN 'IVSMODE=2'

VS無効化モードを使用する場合の,インデクスの定義例を次の図に示します。

図2‒65 VS無効化モード使用時のインデクス定義例

[図データ]

(b) IVS対応機能使用時の注意

  • IVS対応UTF-8でセットアップしたHiRDB環境だけで使用できます。

  • デフォルトでINDEX_UCS4が適用されます。

  • コードポイントU+00110000以降の文字は無効文字扱いとなります。

  • 基底文字とVSを連結した文字を1文字として扱うため,近傍条件の距離やワイルドカード検索の結果が,IVS対応機能を使用しない場合と異なることがあります。

  • 基底文字だけで検索した場合,VS識別モードはVSのない基底文字だけヒットしますが,VS無効化モードはVSの有無に関係なくヒットします。