2.5.4 インデクスの定義
XMLデータ検索プラグインでのインデクスの作成には,通常のインデクス定義,およびインデクスファイルの自動拡張を行うインデクス定義があります。また,XMLデータの登録または更新時のインデクス作成方法を指定することもできます。
- 注意事項
-
大量のXMLデータが登録されている表に対し,CREATE INDEXでIXXML型を作成する場合,タイムアウトが発生する場合があります。これを避けるために,大量のXMLデータのインデクスを作成するCREATE INDEXを実行するときは,次に示す設定をしてタイムアウトを無制限にしてから実行してください。
- HiRDBのシステム共通定義
pd_watch_time=0
- クライアント環境変数
PDCWAITTIME=0
また,この場合はログを取得しない運用をお勧めします。ログを取得しない運用については,「6.3.1(3) ログレスモード」を参照してください。
以降,各定義方法について説明します。
- 〈この項の構成〉
-
(1) 通常のインデクス定義
XMLデータ検索用のインデクス作成情報を定義するには,定義系SQLのCREATE INDEXを使用します。この定義をすることで,XMLデータ検索機能が使用できるようになります。
CREATE INDEXのインデクス型識別子にはIXXMLと指定してください。また,RDエリア名には,「2.5.2 データ格納領域の確保」でIXXML型情報の格納領域として確保したRDエリアを指定してください。IXXMLインデクス型プラグインで使用するインデクスのRDエリアは,ログ取得モードとなります。CREATE INDEXの詳細については,マニュアル「HiRDB SQLリファレンス」を参照してください。
インデクスの定義例を次に示します。
(2) インデクスファイル自動拡張機能のインデクス定義
インデクスファイル自動拡張機能を利用すると,インデクスファイル作成時の空き容量を,各論理ファイルの拡張領域として使用できるようになります。これによってRDエリアを有効利用できます。なお,HiRDBが文字コードutf-8でセットアップされた場合,インデクスファイル自動拡張機能は自動的に有効になります。
この機能を使用する場合は,プラグインオプションに次の定義が必要です。
PLUGIN 'FLEX_AREA'
この機能を使用するとインデクスが自動的に拡張するため,インデクスの拡張ユティリティを実行する必要はありません。この機能を利用した場合にインデクスの拡張ユティリティを実行したときは,無視されます。
インデクスファイル自動拡張機能を使用する場合の,インデクス定義例を次の図に示します。
(3) インデクス作成ルール追加機能のインデクス定義
インデクス作成ルール追加機能とは,標準で作成するインデクス情報に,カタカナ,漢字,数字,英字など,すべての文字の種類(文字種)の組み合わせを追加する機能です。この機能を使用することで,検索タームがさまざまな文字種の組み合わせで構成される場合の検索性能が向上します。
(a) インデクス作成ルール追加機能の定義方法
インデクス作成ルール追加機能を使用する場合には,CREATE INDEXのプラグインオプションに対して次の表に示す内容を定義してください。
定義内容※ |
説明 |
---|---|
INDEX_ALL |
すべての文字種の組み合わせを追加します。 |
INDEX_MEDIUM |
カタカナ,数字,および記号の一部の文字種の組み合わせを追加します。専門分野で使用する用語や技術系の用語が頻出する場合に,使用することをお勧めします。 |
インデクス作成ルール追加機能を使用する場合の,インデクスの定義例を次の図に示します。
(4) インデクス作成方法指定
表のXML型列にXMLデータを登録している状態でCREATE INDEXを実行する場合,次のどちらかの方法を指定できます。運用形態に合わせて指定してください。
-
CREATE INDEX実行時にはインデクスに反映しないでXMLデータやデータの登録だけを実行し,インデクス作成開始ユティリティを使用してインデクスへのXMLデータ登録を実行する方法(初期分割登録,または分割遅延登録)
インデクス作成開始ユティリティの詳細については,「3.2.8 phjstartidx(インデクス作成開始ユティリティ)」を参照してください。
(a) インデクス作成方法指定の定義方法
インデクス作成方法指定を使用する場合,CREATE INDEXのプラグインオプションに即時登録,初期分割登録,または分割遅延登録の定義を追加します。インデクス作成方法指定の定義を省略した場合,即時登録が適用されます。
- 即時登録
-
表に登録されているXMLデータについて,CREATE INDEX実行時にインデクス作成とインデクスへのXMLデータ登録を実行します。
即時登録を使用する場合,CREATE INDEXのプラグインオプションに次の定義を追加,または省略します。
PLUGIN 'CREATEMODE=0'
- 初期分割登録
-
表に登録されているXMLデータについて,CREATE INDEX実行時にはインデクスへは反映しません。インデクス作成開始ユティリティを使用してインデクスへのXMLデータ登録を実行します。インデクス作成開始ユティリティの詳細については,「3.2.8 phjstartidx(インデクス作成開始ユティリティ)」を参照してください。
初期分割登録を使用する場合,CREATE INDEXのプラグインオプションに次の定義を追加します。
PLUGIN 'CREATEMODE=1'
初期分割登録使用時のインデクスの定義例を次の図に示します。
- 分割遅延登録
-
表に登録されているXMLデータについて,CREATE INDEX実行時にはインデクスへ反映しません。インデクス作成開始ユティリティを実行してインデクスへのXMLデータ登録を実行します。インデクス作成開始ユティリティの詳細については,「3.2.8 phjstartidx(インデクス作成開始ユティリティ)」を参照してください。
分割遅延登録を使用する場合,インデクス分割遅延登録用の領域が必要となります。分割遅延登録を使用する場合,CREATE INDEXのプラグインオプションに次の定義を追加します。
PLUGIN 'CREATEMODE=2,DELAY_SIZE=インデクス分割遅延登録用領域サイズ(キロバイト)'
インデクス分割遅延登録用領域サイズの見積もりについては,「2.3.2(1)(b) ユーザLOB用RDエリア容量」を参照してください。また,分割遅延登録を設定していないインデクスに対しては,インデクス情報変更ユティリティを使用することで分割遅延登録を設定したインデクスに移行できます。インデクス情報変更ユティリティの詳細については,「3.2.10 phjmodidx(インデクス情報変更ユティリティ)」を参照してください。指定できる最大値・最小値は次のとおりです。
-
最大値:129,584キロバイト
-
最小値:2,608キロバイト
-
分割遅延登録使用時のインデクスの定義例を次の図に示します。
分割遅延登録への移行時に実行する,インデクス情報変更ユティリティの指定例を次の図に示します。
- 分割遅延登録・更新系SQL同時実行
-
遅延登録実行時に,同時にインデクス作成開始ユティリティを実行してインデクスへXMLデータを登録します。インデクス作成開始ユティリティの詳細については,「3.2.8 phjstartidx(インデクス作成開始ユティリティ)」を参照してください。分割遅延登録・更新系SQL同時実行を利用する場合,遅延登録時に情報を退避しておく領域が必要です。CREATE INDEXのプラグインオプションに次の定義を追加します。
PLUGIN 'CREATEMODE=3,DELAY_SIZE=遅延登録時に情報を退避する領域サイズ(キロバイト)'
遅延登録時に情報を退避する領域サイズの見積もりについては,「2.3.2(1)(b) ユーザLOB用RDエリア容量」を参照してください。
この退避領域に指定できる最大値・最小値は次のとおりです。
-
最大値:129,584キロバイト
-
最小値:12,832キロバイト
分割遅延登録・更新系SQL同時実行のインデクスの定義例を次の図に示します。
図2‒12 分割遅延登録・更新系SQL同時実行使用時のインデクス定義例 分割遅延登録・更新系SQL同時実行する際に,インデクスに反映されていない文書をスキャンで検索する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。
PLUGIN 'CREATEMODE=3,DELAY_SIZE=遅延登録時に情報を退避するサイズ,WITH_TABLE_SCAN=スキャンデータ格納用領域サイズ(キロバイト)';
スキャンデータ格納用領域サイズの見積もりについては,「2.3.2(1)(b) ユーザLOB用RDエリア容量」を参照してください。
スキャンデータ格納用領域サイズに指定できる最大値,および最小値は次のとおりです。
-
最大値:2,097,144キロバイト
-
最小値:max(44,000キロバイト,DELAY_SIZE指定容量×3+5,120キロバイト)
なお,スキャンで検索できるのはXQueryで次の述語を使用する場合だけです。
-
文字列(xs:string型)同士の完全一致(=)
-
fn:contains関数
-
fn:starts-with関数
-
fn:ends-with関数
インデクスに反映されていない文書をスキャンで検索する場合のインデクス定義例を次の図に示します。
図2‒13 インデクス未反映文書をスキャンで検索する場合のインデクス定義例 -
(b) 初期分割登録・分割遅延登録使用時の注意
-
CREATE INDEX実行後,インデクスへ登録されていないXMLデータのインデクスは,インデクス作成開始ユティリティを使用して登録してください。インデクス作成開始ユティリティの詳細については,「3.2.8 phjstartidx(インデクス作成開始ユティリティ)」を参照してください。インデクスへ登録されていないXMLデータが存在するかどうかは,インデクス情報の取得ユティリティを使用して,「Number of Documents for Unfinished-Index」の項目を確認してください。インデクス情報の取得ユティリティの詳細については,「3.2.4 phjidxls(インデクス情報の取得ユティリティ)」を参照してください。
-
インデクス検索を使用する場合,インデクスへ登録されていないXMLデータは,検索対象になりません。
-
インデクスへ登録されていないXMLデータが存在する場合,登録または更新したXMLデータはインデクスへ登録されません。インデクスへ登録する場合は,インデクス作成開始ユティリティを使用してください。インデクス作成開始ユティリティの詳細については,「3.2.8 phjstartidx(インデクス作成開始ユティリティ)」を参照してください。
-
インデクスが作成されていないXMLデータが存在する場合,検索を実行しても,インデクスが作成されていない旨のメッセージは出力されません。
-
初期分割登録の場合,CREATE INDEX実行後,インデクス作成開始ユティリティを実行して,すべてのXMLデータがインデクスへ登録された時点で,インデクス作成方法が初期分割登録から即時登録に切り替わります。インデクス作成開始ユティリティの詳細については,「3.2.8 phjstartidx(インデクス作成開始ユティリティ)」を参照してください。以降,XMLデータの登録または更新と同時にインデクスへの登録が行われるようになるため,XMLデータ登録または更新時にインデクスへ登録する時間が掛かるようになります。
-
移行したインデクスに対してインデクス情報変更ユティリティを使用して初期化をした場合,変更した情報は無効になります。インデクス情報変更ユティリティの詳細については,「3.2.10 phjmodidx(インデクス情報変更ユティリティ)」を参照してください。
-
インデクス分割遅延登録用領域を使い切った場合は,遅延しているすべてのXMLデータをインデクスに反映するか,またはインデクス情報変更ユティリティを使用してインデクス分割遅延登録用領域を拡張してください。インデクス情報変更ユティリティの詳細については,「3.2.10 phjmodidx(インデクス情報変更ユティリティ)」を参照してください。
-
分割遅延登録・更新系SQL同時実行をしない運用へ移行する場合,インデクスを削除してください。そのあと,運用に合わせてインデクスを再定義してください。
-
WITH_TABLE_SCAN指定を行う運用の場合,グローバルバッファを指定するとスキャン対象データがグローバルバッファに保持されます。このため高速な検索が実現できます。バッファサイズはWITH_TABLE_SCANで指定した値以上のサイズを指定する必要があります。
-
WITH_TABLE_SCAN指定をした場合,指定された領域内にESIS-B形式データを格納します。phjstartidxでインデクス作成を実行すると,格納したESIS-B形式データは削除されます。ただし,最後に実行したphjstartidxでインデクス作成したときのESIS-B形式データだけは,ロールバックに備えるため保持されます。
-
分割遅延登録・更新系SQL同時実行の場合,削除要求も即時反映しないため,UPDATEやDELETE後にINSERTを実行し,インデクスに反映する前に検索すると,古い情報でインデクス未反映XMLデータがヒットするときがあります。
(5) 大小文字・全角文字半角文字統一機能のインデクス定義
大文字と小文字,または全角文字と半角文字の違いを区別しないで検索を実行したい場合には,大小文字・全角文字半角文字統一機能を使用します。
(a) 大小文字・全角文字半角文字統一機能の定義方法
大小文字・全角文字半角文字統一機能を使用する場合には,CREATE INDEXのプラグインオプションに対して次の表に示す内容を定義します。
定義内容※ |
説明 |
---|---|
SAMECASE=ON |
英大文字と英小文字を区別しないでインデクスを作成します。 |
SAMEWIDE=ON |
全角文字と半角文字の英数字,カタカナ,記号を区別しないでインデクスを作成します。 |
大小文字・全角文字半角文字統一機能使用時のインデクス定義例を図2-14,図2-15に示します。
(b) 大小文字・全角文字半角文字統一機能使用時の注意
-
全角文字半角文字統一機能を指定しないで,近傍条件検索やワイルドカードに「?」を指定した検索を実行した場合,半角文字のガ行,ザ行,ダ行,バ行,パ行,および「ヴ」を2文字として扱います。しかし,全角文字半角文字統一機能を指定した場合は1文字として扱うため注意が必要です。
-
必ず異表記展開する運用であれば,インデクスの文字統一機能を使用することを推奨します。
(7) 濁音統一機能のインデクス定義
検索時に「バ」と「ハ゛」,「ぱ」と「は゜」のように濁音や半濁音を区別しないようにするには,濁音統一機能を使用します。
(a) 濁音統一機能の定義方法
濁音統一機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。
PLUGIN 'SAMED=ON'
濁音統一機能を使用する場合の,インデクスの定義例を次の図に示します。
「SAMED=ON」を指定すると,濁音,半濁音が統一されます。
(b) 濁音統一機能使用時の注意
濁音文字統一機能を指定しないで,近傍条件検索やワイルドカードに「?」を指定した検索を実行した場合,半角文字の濁音で表示できる文字を2文字として扱います。しかし,濁音文字統一機能を指定した場合は1文字として扱うため注意が必要です。
(8) 削除文字指定機能のインデクス定義
検索に使用しない文字を除いて検索性能を向上させるには,削除文字指定機能を使用します。
(a) 削除文字指定機能の定義方法
削除文字指定機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義の追加が必要です。
PLUGIN 'DELcode=ON'
削除文字指定機能を使用する場合のインデクス定義例を次の図に示します。
「DELcode=ON」を指定すると,次の文字が削除されます。
-
全角および半角文字の「。」(句点),「、」(読点)
-
全角スペース,半角スペース(0x20)
-
改行コード(0x0a,0x0d),タブコード(0x09)
(b) 削除文字指定機能使用時の注意
-
近傍検索で指定された語句リストの間に削除文字が含まれる場合,距離の指定方法によってはヒットしないことがあります。
例えば,登録データが「COMPUTER△NETWORK」の場合,「COMPUTER」と「NETWORK」の間の距離は0となります。
-
削除文字を指定したインデクスに対して検索を実行する場合,登録データから削除文字が取り除かれていることに注意してください。
例えば,削除文字が半角スペースで,登録データが「tha[△・・・△]</終了タグ>」の場合(・・・は0個以上の繰り返しを示します),「tha?」で検索してもヒットしません。
-
検索タームおよびすべての異表記展開・同義語異表記展開結果が,削除文字だけで構成されている場合,0件ヒットとなります。
(9) 英文検索機能のインデクス定義
英文に対して検索する場合は,単語単位で検索する英文インデクス定義をしてください。
英文インデクスの定義は次の方法があります。運用に応じてご使用ください。
-
単語一致(ENGLISH)
-
単語一致,前方一致(ENGLISH_STANDARD)
図2‒19 英文検索機能を使用する場合のインデクス定義例(英文検索)
- 注意事項
-
英文インデクス定義は,次のインデクス定義と併用することはできません。
-
全角文字半角文字統一機能(SAMEWIDE=ON)
-
拗音統一検索(SAMEY=ON)
-
インデクス作成ルール追加機能(INDEX_ALL)
-
インデクス作成ルール追加機能(INDEX_MEDIUM)
-
(a) 英文検索のインデクスに指定できる項目
英文検索機能で使用するインデクスの定義ファイルについて説明します。
- インデクスデリミタファイル
-
- 機能
-
英文検索機能で使用するインデクスを作成する場合に必要な単語の区切り(デリミタ)を定義します。定義したインデクスデリミタに従って単語を抽出し,英文検索機能で使用するインデクスを作成します。抽出した単語が64文字(バイト)を超える場合は,65文字(バイト)目以降を無視して,64文字(バイト)目までの文字でインデクスを作成します。なお,インデクスデリミタは検索対象にできません。
- 指定形式
-
CREATE INDEXのプラグインオプションにインデクスデリミタファイルのファイル名を指定します。
INDEXdlmt=ファイル名
インデクスデリミタファイルは,CREATE INDEXを実行する前に,XML Extensionをセットアップしたすべてのサーバマシンに対して,同一の内容で次に示すディレクトリに事前に作成しておく必要があります。
$PDDIR/plugin/_phjxml/idx_def
また,サンプルファイル($PDDIR/plugin/_phjxml/sample/pdplgdlmt)を提供しています。
- 記述形式
"インデクスデリミタ"[,"インデクスデリミタ"]・・・・・・
-
インデクスデリミタは,「"」(半角ダブルクォーテーション)で囲んで指定します。
-
インデクスデリミタに使用できる文字は,「0x21」〜「0x7E」の範囲の1バイト文字コードです。
-
「0x20」(半角スペース),「0x09」(タブ)は,無条件にインデクスデリミタとなります。
-
複数指定する場合は,「"」で囲んだインデクスデリミタを「,」(半角コンマ)で区切って指定します。
-
「"」をインデクスデリミタにする場合は「""」と二つ続けて定義し,それを「"」で囲んで指定します。
-
- 注意事項
-
-
インデクスデリミタファイルは省略できます。
-
省略した場合は,「0x20」(半角スペース),「0x09」(タブ),記号(「0x21」〜「0x2F」,「0x3A」〜「0x40」,「0x5B」〜「0x60」,「0x7B」〜「0x7E」)がインデクスデリミタとなります。
-
不要語,または削除コードに指定した文字コードをインデクスデリミタに指定しないでください。指定した場合は,インデクスデリミタ,削除コード,不要語,の優先順位で処理します。
-
- 不要語ファイル
-
- 機能
-
英文検索機能に使用するインデクスを作成する場合,検索に不要な単語を定義します。不要語については,検索用インデクスを作成しません。
- 指定形式
-
CREATE INDEXのプラグインオプションに不要語ファイルのファイル名を指定します。
NOindex=ファイル名
不要語ファイルは,CREATE INDEXを実行する前に,XML Extensionをセットアップしたすべてのサーバマシンに対して,同一の内容で次のディレクトリに事前に作成しておく必要があります。
$PDDIR/plugin/_phjxml/idx_def
- 記述形式
"不要語"[,"不要語"]・・・・・・
-
不要語は,「"」(半角ダブルクォーテーション)で囲んで指定します。
-
不要語に使用できる文字は,「0x21」〜「0x7E」の範囲1バイトの文字コードです。
-
複数指定する場合は,「"」で囲んだ不要語を「,」(半角コンマ)で区切って指定します。不要語は255個まで指定できます。
-
「"」を不要語にする場合は,「""」と二つ続けて定義し,それを「"」で囲んで指定します。
-
不要語は64文字(バイト)まで指定できます。64文字(バイト)を超えて指定した場合,65文字(バイト)目以降を無視して,64文字(バイト)目までの文字列を不要語とします。
-
- 注意事項
-
-
不要語ファイルは省略できます。省略した場合は,不要語なしでインデクスを作成します。
-
インデクスデリミタ,または削除コードに指定した文字コードを不要語に指定しないようにしてください。指定した場合は,インデクスデリミタ,削除コード,不要語の優先順位で処理します。
-
検索条件で指定した検索タームに不要語を含む場合は,不要語を任意の1単語とみなして検索します。なお,検索条件に不要語だけを指定した場合は,入力条件エラーとなります。
-
- 削除コードファイル
-
- 機能
-
英文検索機能で使用するインデクスを作成する場合に,削除するコードを定義します。定義した削除コードはないものとして単語を抽出し,英文検索機能で使用するインデクスを作成します。
単語に「-」(ハイフン)のような不要なコードがある場合,削除してその前後を詰めて扱い,必要なコードだけでインデクスを作成できます。
- 指定形式
-
CREATE INDEXのプラグインオプションに削除コードファイルのファイル名を指定します。
DELcode=ファイル名
削除コードファイルは,CREATE INDEXを実行する前に,XML Extensionをセットアップしたすべてのサーバマシンに対して,同じ内容で次のディレクトリに事前に作成しておく必要があります。
$PDDIR/plugin/_phjxml/idx_def
- 記述形式
"削除コード"[,"削除コード"]・・・・・・・
-
削除コードは,「"」(半角ダブルクォーテーション)で囲んで指定します。
-
削除コードに使用できる文字は,「0x21」〜「0x7E」の範囲の1バイト文字コードです。
-
複数指定する場合は,「"」で囲んだ削除コードを「,」(半角コンマ)で区切って指定します。
-
「"」を削除コードにする場合は,「""」と二つ続けて定義し,それを「"」で囲んで指定します。
-
- 注意事項
-
-
削除コードファイルは省略できます。省略した場合は,削除コードなしでインデクスを作成します。
-
インデクスデリミタ,または不要語に指定した文字コードを削除コードに指定しないようにしてください。指定した場合は,インデクスデリミタ,削除コード,不要語の優先順位で処理します。
-
(10) 統制ルール指定機能のインデクス定義
ユーザが指定した2〜3バイトの文字を統制するには,統制ルール指定機能を使用します。
- 指定形式
-
CREATE INDEXのプラグインオプションに,統制ルールファイル名を定義します。
PLUGIN 'SAMERULE=ファイル名'または PLUGIN 'SAMERULE2=ファイル名'
SAMERULEに指定した場合は,ほかの文字統一機能よりも優先されます。SAMERULE2に指定した場合は,ほかの文字統一を実施したあとに,この機能で定義した統制を行います。また,統制ファイルは,CREATE INDEXを実行する前に,次のディレクトリに事前に作成しておく必要があります。
- UNIXの場合
-
$PDDIR/plugin/_phjxml/idx_def
- Windowsの場合
-
%PDDIR%\plugin\_phjxml\idx_def
- 記述形式
統制文字,統制される文字,・・・ 統制文字,統制される文字,・・・
-
一つの統制グループを一行で記述してください。
-
2〜3バイト文字の1文字を半角コンマで区切って二つ以上指定し,統制文字を先頭に指定してください。
-
- 注意事項
-
-
ルールファイルに指定する文字の文字コードはHiRDBの文字コードに合わせてください。
-
ルールファイル名は最大256バイトです。
-
英文インデクスまたはHiRDBの文字コードがutf-8の場合,概念インデクスに対して指定するとエラーになります。
-
SAMERULEとSAMERULE2は同時に指定できません。
-
一行は4,093バイト以内(改行コード含む)で指定してください。
-
先頭文字が半角の”#”で始まる行はコメント行として扱います。
-
空行は無視します。
-
インデクス作成後は統制ルール情報を変更できません。インデクス作成後にルールファイルの内容を変更してもインデクスには反映されません。
-
統制文字と統制される文字を指定する場合,エラーになるケースを次に示します。
・改行,半角コンマ,および2〜3バイトの文字以外を指定した場合
・統制される文字に,重複して同じ文字を指定した場合
・統制文字に,統制される文字を指定した場合
-
同義語展開指定をする場合,新規に同義語辞書を作成するか,同義語辞書移行ユティリティを実行して,既存の同義語辞書を移行する必要があります。同義語辞書を作成する方法は,「3.2.1 phdsyndicreg(同義語辞書登録ユティリティ)」を参照してください。同義語辞書を移行する方法は,「3.2.12 phdsyndicconv(同義語辞書移行ユティリティ)」を参照してください。
-
extracts関数でハイライトタグを埋め込む場合,ハイライト位置条件式に指定する検索タームは文字統一の対象になりません。データを登録したときの文字で指定してください。
-
(11) ひらがなカタカナ統一機能のインデクス定義
検索時にひらがなとカタカナを区別しないようにするためには,ひらがなカタカナ統一機能を使用します。
(a) ひらがなカタカナ統一機能の定義方法
ひらがなカタカナ統一機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。
PLUGIN 'SAMEK=ON'
ひらがなカタカナ統一機能を使用する場合の,インデクスの定義例を次の図に示します。
「SAMEK=ON」を指定すると,ひらがなとカタカナが統一されます。
(b) ひらがなカタカナ統一機能使用時の注意
-
同義語展開指定をする場合,あらかじめバージョン09-02以降のXML Extensionで同義語辞書を作成するか,または同義語辞書移行ユティリティを実行して,既存の同義語辞書を移行する必要があります。
-
ひらがなの検索でもカタカナ異表記,カタカナ長音ハイフン展開,カタカナベーシック展開およびカタカナ拗音展開が有効となります。ただし,ひらがな拗音展開は無効となります。
(12) 検索高速化インデクス(V2)機能
検索を高速化するためには,検索高速化インデクス(V2)機能を使用します。
検索高速化インデクス(V2)機能を使用すると,通常のインデクスよりも検索時のインデクス参照量が少なくなります。次の隣接照合や論理演算を含む検索,および絞込み検索に対してこの機能を使うと効果的です。
-
出現頻度の低いタームを含む隣接照合
-
出現頻度の低いタームを含むANDの論理演算
-
出現頻度の高いタームを含むORの論理演算
-
ほかのインデクスの条件による絞り込み率が良い場合の絞込み検索(バージョン09-05以降)
なお,検索高速化インデクス(V2)機能を使う場合,通常のインデクスと比べてメモリ使用量,RDエリアの容量,ファイル容量,および適用される環境定義などが異なります。この機能を使用する前に,それぞれの設定を確認してください。
-
メモリ使用量については,「2.3.1(1)(g) 検索時最大ワークメモリサイズ」を参照してください。
-
RDエリアの容量については,「2.3.2(1)(b) ユーザLOB用RDエリア容量」を参照してください。
-
ファイル容量については,「2.3.3(1)(b) ログ量」を参照してください。
-
環境定義については,「2.6.2(2) 設定できる項目」を参照してください。
(a) 検索高速化インデクス(V2)機能の定義方法
検索高速化インデクス(V2)機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。
PLUGIN 'INDEX_V2'
検索高速化インデクス(V2)機能を使用する場合の,インデクスの定義例を次の図に示します。
検索高速化インデクス(V2)機能を使用した場合,指定できないプラグインオプション,およびデフォルトで適用されるプラグインオプションがあります。次の表に示します。
定義文字列 |
定義の説明 |
検索高速化インデクス(V2)機能使用時の指定可否 |
---|---|---|
FLEX_AREA |
インデクスファイル自動拡張機能のインデクス定義 |
△※ |
ENGLISH |
英文インデクスの定義(単語一致) |
▲ |
ENGLISH_STANDARD |
英文インデクスの定義(単語一致,前方一致) |
▲ |
INDEXdlmt |
英文インデクスのデリミタ指定 |
▲ |
NOindex |
英文インデクスの不要語指定 |
▲ |
(b) 検索高速化インデクス(V2)機能使用時の注意
次のユティリティは使用できません。
-
phjincmt(インデクスのインクリメンタル)
-
phjexpnd(インデクスの拡張)
-
phjcond(インデクス詰め替え)
(13) カタカナ異表記統一機能のインデクス定義
カタカナ異表記を区別しないようにするには,カタカナ異表記統一機能を使用します。カタカナ異表記統一機能を使用すると,特定のカタカナを区別しないでインデクスが作成できます。
カタカナ異表記統一機能で置き換えられる文字を次に示します。
置き換え前の文字 |
置き換え後の文字 |
---|---|
ツィ |
チ |
ヴァ |
バ |
ヴィ |
ビ |
ヴェ |
ベ |
ヴォ |
ボ |
テュ |
チュ |
フュ |
ヒュ |
ヴュ |
ビュ |
ヴ |
ブ |
(a) カタカナ異表記統一機能の定義方法
カタカナ異表記統一機能を使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。
PLUGIN 'SAMEE=ON'
「SAMEE=ON」を指定すると,カタカナ異表記が統一されます。
(b) カタカナ異表記統一機能使用時の注意
-
同義語展開指定をする場合,あらかじめバージョン09-04以降のXML Extensionで同義語辞書を作成するか,または同義語辞書移行ユティリティを実行して,既存の同義語辞書を移行する必要があります。
-
extracts関数でハイライトタグを埋め込む場合,ハイライト位置条件式に指定する検索タームは文字統一の対象になりません。データを登録したときの文字で指定してください。
(14) IVS対応機能のインデクス定義
UnicodeのIVS(Ideographic Variation Sequence)に対応する場合,次のどちらかの方法を指定できます。運用形態に合わせて指定してください。
-
基底文字とVS(Variation Selector)の組み合わせが一致すればヒットする(VS識別モード)
-
基底文字が同じであればVSが異なってもヒットする(VS無効化モード)
(a) IVS対応機能の定義方法
IVSに対応する場合,CREATE INDEXのプラグインオプションにVS識別モード,またはVS無効化モードの定義を追加します。
- VS識別モード
-
VS識別モードを使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。
PLUGIN 'IVSMODE=1'
VS識別モードを使用する場合の,インデクスの定義例を次の図に示します。
図2‒23 VS識別モード使用時のインデクス定義例 - VS無効化モード
-
VS無効化モードを使用する場合は,CREATE INDEXのプラグインオプションに次の定義を追加してください。
PLUGIN 'IVSMODE=2'
VS無効化モードを使用する場合の,インデクスの定義例を次の図に示します。
図2‒24 VS無効化モード使用時のインデクス定義例
(b) IVS対応機能使用時の注意
-
IVS対応UTF-8でセットアップしたHiRDB環境だけで使用できます。
-
基底文字とVSを連結した文字を1文字として扱うため,近傍条件の距離やワイルドカード検索の結果が,IVS対応機能を使用しない場合と異なることがあります。
-
基底文字だけで検索した場合,VS識別モードはVSのない基底文字だけヒットしますが,VS無効化モードはVSの有無に関係なくヒットします。