Hitachi

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


2.5.6 インデクスの定義

文書検索プラグインでのインデクスの作成は,通常のインデクス定義,および差分インデクスを使用した登録性能を向上させるためのインデクス定義があります。また,文書の登録または更新時のインデクス作成方法を指定することもできます。

注意事項

大量の文書が登録されている表に対し,CREATE INDEXでn-gramインデクスを作成する場合,タイムアウトが発生する場合があります。これを避けるために,大量の文書のインデクスを作成するCREATE INDEXを実行するときは,次に示す設定をしてタイムアウトを無制限にしてから実行してください。

HiRDBのシステム共通定義
pd_watch_time=0
クライアント環境変数
PDCWAITTIME=0

また,この場合はログを取得しない運用をお勧めします。ログを取得しない運用については,「5.3.1(3) ログレスモード」を参照してください。

以降,各定義方法について説明します。

〈この項の構成〉

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

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

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

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

(例)

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

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

インデクスの定義では,全文検索機能だけを使用する場合と,全文検索機能に加えて,概念検索機能を使用する場合とでは,CREATE INDEXの指定方法が異なります。それぞれのインデクスの定義例を次に示します。

全文検索機能だけを使用する場合

全文検索機能だけを使用する場合の,インデクスの定義例を次の図に示します。

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

[図データ]

全文検索機能に加えて,概念検索機能を使用する場合

全文検索機能に加えて,概念検索機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義の追加が必要です。

PLUGIN 'CONCEPT_ON'

この指定を省略した場合,概念検索用のインデクスが作成されないため,概念検索を実行できません。概念検索機能を使用する場合の,インデクスの定義例を次の図に示します。

図2‒12 概念検索機能使用時のインデクス定義例

[図データ]

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

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

PLUGIN 'FLEX_AREA'

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

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

図2‒13 インデクスファイル自動拡張機能使用時のインデクス定義例(全文検索用インデクスの場合)

[図データ]

(3) インデクス作成ルール追加機能のインデクス定義

インデクス作成ルール追加機能とは,標準で作成するインデクス情報に,カタカナ,漢字,数字,英字など,すべての文字の種類(文字種)の組み合わせを追加する機能です。この機能を使用することで,検索タームがさまざまな文字種の組み合わせで構成される場合の検索性能が向上します。

特に,概念検索機能を使用する場合には,インデクス作成ルール追加機能を使用することをお勧めします。

(a) インデクス作成ルール追加機能の定義方法

インデクス作成ルール追加機能を使用する場合には,CREATE INDEXのプラグインオプションに対して次の表に示す内容を定義してください。

表2‒8 CREATE INDEXのプラグインオプションに対する定義内容

定義内容

説明

INDEX_ALL

すべての文字種の組み合わせを追加します。特に,概念検索機能を使用する場合には,併用することをお勧めします。

INDEX_MEDIUM

カタカナ,数字,および記号の一部の文字種の組み合わせを追加します。専門分野で使用する用語や技術系の用語が頻出する場合に,使用することをお勧めします。

注※

半角の英字で記述します。

インデクス作成ルール追加機能を使用する場合の,インデクスの定義例を図2-14および図2-15に示します。

図2‒14 インデクス作成ルール追加機能使用時(INDEX_MEDIUM)のインデクス定義例(全文検索用のインデクスの場合)

[図データ]

図2‒15 インデクス作成ルール追加機能使用時(INDEX_ALL)のインデクス定義例(概念検索用のインデクスの場合)

[図データ]

(b) インデクス作成ルール追加機能使用時の注意

インデクス作成ルール追加機能はSGMLTEXT型の列に対してだけ指定できます。FREEWORD型の列に対しては指定できません。

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

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

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

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

表2‒9 定義内容

定義内容

説明

SAMECASE=ON

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

SAMEWIDE=ON

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

注※

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

大小文字・全角文字半角文字統一機能使用時のインデクス定義例を図2-16図2-17および図2-18に示します。

図2‒16 大小文字統一機能使用時のインデクス定義例(全文検索用のインデクスの場合)

[図データ]

図2‒17 全角文字半角文字統一機能使用時のインデクス定義例(全文検索用のインデクスの場合)

[図データ]

図2‒18 大小文字統一機能,および全角文字半角文字統一機能使用時のインデクス定義例(概念検索用のインデクスの場合)

[図データ]

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

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

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

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

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

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

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

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

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

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

PLUGIN 'SAMEY=ON'

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

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

[図データ]

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

[図データ]

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

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

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

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

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

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

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

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

PLUGIN 'SAMED=ON'

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

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

[図データ]

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

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

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

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

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

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

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

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

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

削除文字指定機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義の追加が必要です。

PLUGIN 'DELcode=ON'

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

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

[図データ]

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

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

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

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

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

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

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

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

    例えば,削除文字が半角スペースで,登録データが「tha[△・・・△]</終了タグ>」の場合(・・・は0個以上の繰り返しを示します),"tha?" で検索してもヒットしません。

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

  • 削除文字を指定した検索結果に対し,extracts関数でハイライト表示しても,ハイライト表示する文字列に削除文字が含まれている場合,ハイライト表示されません。

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

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

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

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

PLUGIN 'INDEX_GRAM1'

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

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

[図データ]

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

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

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

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

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

(9) 差分インデクス定義

登録性能を向上させるために,小容量の一時的な登録用インデクスに,文書を追加します。この登録用インデクスを差分インデクスといいます。

(a) 差分インデクスの定義方法

差分インデクスを使用する場合は,CREATE INDEXのプラグインオプションに差分インデクスとして使用する容量を定義します。サイズはキロバイト単位で,次のように定義します。

PLUGIN 'SUB_INDEX=xxxxxx'

なお,差分インデクスとして使用できる容量の最大値は102,400キロバイト,最小値は40,000キロバイトです。差分インデクスの定義が省略された場合,差分インデクスは作成されません。

差分インデクス使用時のインデクスの定義例を図2-23および図2-24に示します。

図2‒23 差分インデクス使用時のインデクス定義例(全文検索用のインデクスの場合)

[図データ]

図2‒24 差分インデクス使用時のインデクス定義例(概念検索用のインデクスの場合)

[図データ]

(b) 登録先インデクスの指定方法

差分インデクスを作成した場合,ユーザはHiRDBクライアント環境変数の指定によって,MASTERインデクスへの登録か,差分インデクスへの登録かを選択できます。

HiRDBクライアント環境変数は次のように指定します。

環境変数名称 : PDPLUGINNSUB

指定できる値 YまたはN

Y:差分インデクスへの登録

N:MASTERインデクスへの登録

環境変数に指定がない場合は,Y(差分インデクスへの登録)が仮定されます。ただし,次の場合には環境変数の指定内容に関係なく,MASTERインデクスへ登録します。

  • 差分インデクスを作成していない場合

  • インデクス作成後またはインデクス再作成後に,インデクスへの文書登録が0件の場合

  • 差分インデクス使用率が100%になった場合

(c) 差分インデクス使用時の注意事項

  • HiRDBの「pdload(データベース作成ユティリティ)」および「pdrorg(データベース再編成ユティリティ)」によるインデクス登録時も,差分インデクスへの登録ができます。この場合は,作成するインデクス量が差分インデクス残容量を超えないように注意してください。残容量を超えた場合は,システムログファイルに次のメッセージが出力されます。

    KFPY99999-I (_phngram) 02000-I Sub index using ratio 100 percent

    この場合,MASTERインデクスへの登録が完了すれば,pdloadおよびpdrorgは正常終了します。ただし,以降の登録および更新処理で差分インデクスを使えるようにするために,差分インデクスのマージをしてください。

  • HiRDBの「pdload(データベース作成ユティリティ)」を使用してデータ登録を実行する場合に,環境変数の指定をしていないと,差分インデクスへの登録が実行されます。このときに差分インデクス容量が不足すると,MASTERインデクスに再度登録が実行されることになり,余計に時間が掛かります。このため,環境変数の設定値を確認してから,「pdload(データベース作成ユティリティ)」を実行してください。

  • UCS4インデクスでは指定できません。

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

表のSGMLTEXT型列に文書を登録している状態でCREATE INDEXを実行する場合,次のどれかの方法を指定できます。運用形態に合わせて指定してください。

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

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

即時登録

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

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

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

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

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

PLUGIN 'CREATEMODE=1'

初期分割登録使用時のインデクスの定義例を図2-25および図2-26に示します。

図2‒25 初期分割登録使用時のインデクス定義例(全文検索用のインデクスの場合)

[図データ]

図2‒26 初期分割登録使用時のインデクス定義例(概念検索用のインデクスの場合)

[図データ]

分割遅延登録

表に登録されている文書について,CREATE INDEX実行時にはインデクスへ反映しません。インデクス作成開始ユティリティを使用してインデクスへの文書登録を実行します。インデクス作成開始ユティリティの詳細については,「3.2.14 phnstartidx(インデクス作成開始ユティリティ)」を参照してください。分割遅延登録を使用する場合,インデクス分割遅延登録用の領域が必要となります。

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

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

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

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

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

分割遅延登録時のインデクスの定義例を図2-27および図2-28に示します。

図2‒27 分割遅延登録使用時のインデクス定義例(全文検索用のインデクスの場合)

[図データ]

図2‒28 分割遅延登録使用時のインデクス定義例(概念検索用のインデクスの場合)

[図データ]

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

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

[図データ]

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

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

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

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

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

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

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

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

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

[図データ]

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

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

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

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

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

  • 差分インデクスを使用している場合,登録または更新した文書はすべてMASTERインデクスに登録されます。

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

  • インデクス情報変更ユティリティで移行したインデクスに対して初期化をした場合,変更した情報は無効になります。

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

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

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

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

UCS2の範囲を超えるUCS4の範囲の文字を使用するには,UCS4用の定義が必要になります。また,UCS4インデクスは自動拡張機能を適用します。

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

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

PLUGIN 'INDEX_UCS4'

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

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

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

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

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

    • 差分インデクス(SUB_INDEX)

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

(c) UCS2からUCS4への移行

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

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

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

  • 差分インデクス(SUB_INDEX)

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

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

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

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

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

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

  • 単語一致(ENGLISH)

  • 単語一致,前方一致(ENGLISH_STANDARD)

英文検索機能を使用する場合のインデクス定義例を次の図に示します。

図2‒31 英文検索機能を使用する場合のインデクス定義例(英文検索)

[図データ]

(b) 英文検索機能使用時の注意事項

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

  • 概念検索機能(CONCEPT_ON)

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

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

  • インデクス作成ルール追加機能(INDEX_ALL)

  • インデクス作成ルール追加機能(INDEX_MEDIUM)

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

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

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

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

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

指定形式

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

INDEXdlmt=ファイル名

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

$PDDIR/plugin/_phngram/idx_def

また,サンプルファイル($PDDIR/plugin/_phngram/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/_phngram/idx_def
記述形式

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

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

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

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

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

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

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

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

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

削除コードファイル
機能

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

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

指定形式

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

DELcode=ファイル名

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

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

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

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

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

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

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

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

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

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

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

指定形式

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

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

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

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

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

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

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

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

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

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

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

  • 空行は無視します。

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

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

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

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

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

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

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

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

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

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

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

PLUGIN 'SAMEK=ON'

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

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

[図データ]

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

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

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

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

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

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

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

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

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

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

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

PLUGIN 'INDEX_V2'

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

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

[図データ]

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

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

定義文字列

定義の説明

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

FLEX_AREA

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

※1

INDEX_GRAM1

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

×

SUB_INDEX

差分インデクスの定義

×

INDEX_UCS4

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

※2

ENGLISH

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

ENGLISH_STANDARD

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

INDEXdlmt

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

NOindex

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

(凡例)

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

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

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

注※1

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

注※2

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

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

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

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

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

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

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

    • phnconget(統計情報収集)

    • phnconbuild(統計情報統合)

    • phnconrstr(統計情報反映)

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

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

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

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

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

置き換え前の文字

置き換え後の文字

ツィ

ヴァ

ヴィ

ヴェ

ヴォ

テュ

チュ

フュ

ヒュ

ヴュ

ビュ

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

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

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

[図データ]

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

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

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

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

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

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

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

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

VS識別モード

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

PLUGIN 'IVSMODE=1'

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

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

[図データ]

VS無効化モード

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

PLUGIN 'IVSMODE=2'

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

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

[図データ]

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

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

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

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

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

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