CREATE INDEX コマンド
Net Search Extender フルテキスト照会で使用するテキスト列にフルテキスト索引を作成します。
目的
パーティション・データベース環境では、フルテキスト索引は、ユーザー表が定義された表スペースのすべてのパーティションに作成されます。 表スペースの配布に対する以降の変更は許可されておらず、管理コマンドおよび検索処理において、予期しない動作につながります。
許可
ステートメントの許可 ID には、以下の特権が少なくとも 1 つ含まれていなければなりません。
- DBADM 権限
- テキスト索引が定義されている表またはニックネームに対する CONTROL 特権
- テキスト索引が定義されている表またはニックネームに対する INDEX 特権
さらに次のいずれか 1 つ
- データベースに対する IMPLICIT_SCHEMA 権限 (索引の暗黙または明示のスキーマ名が存在しない場合)
- スキーマに対する CREATEIN 特権 (索引のスキーマ名が既存のスキーマを指している場合)
前提条件
インスタンス所有者は、DATAACCESS を持つ DBADM 権限を保持している必要があります。 バージョン 9.7 では、SYSADM は SECADM および DBADM 特権を保持しなくなりました。 SECADM は、 CREATE INDEX コマンドを実行する前に、DATAACCESS を持つ DBADM をインスタンス所有者に明示的に付与する必要があります。
コマンド構文
コマンド・パラメーター
- index-schema
- テキスト索引のスキーマ。 これは、索引固有の管理表の Db2® スキーマ名として使用します。 スキーマが指定されていない場合は、Db2 接続のユーザー ID が使用されます。 索引スキーマは、有効な Db2 スキーマ名でなければならないことに注意してください。
- index-name
- 索引の名前。 索引スキーマとともに、この名前はデータベースのフルテキスト索引を一意に識別します。
索引名は有効な Db2 索引名でなければならないことに注意してください。
- table-schema
- 索引が作成される表、ニックネーム、またはビューのスキーマ。 スキーマが指定されていない場合は、 Db2 接続のユーザー ID が使用されます。
- table-name
- フルテキスト索引が作成される列を含む、接続されたデータベース内のテキスト表、ニックネーム、またはビューの名前。表名が Db2 基本表を参照しない場合は、次の制限があることに注意してください。
- ビューは、ストアード・プロシージャー検索および表値関数検索のみを許可します。 したがって、 KEY COLUMNS FOR INDEX ON VIEW 節を使用して、索引またはビューのキー列を指定する必要があります。
- キャプチャー表を使用しないニックネームへの増分索引更新の場合、 ログ表が作成されます。 ニックネーム表またはビューのデータに変更がある場合は、 手動でログ表を指定する必要があります。 基本表の場合、この作業は自動的に実行されるので、ユーザーはログ表に触れてはなりません。
- Db2 述部
CONTAINS
、SCORE
、およびNUMBEROFMATCHES
は、基本表またはニックネームの索引に対してのみ許可され、ビューに対しては許可されません。 - キャッシュ検索結果オプションをコマンドに指定した場合にのみ、ビュー上の索引は許可されます。
- 増分更新をサポートするための、トリガーに基づくログを補完する拡張テキスト保持ステージング・インフラストラクチャーは、パーティションおよび非パーティション基本表に適用することができます。しかし、ビューまたはニックネームに対してはサポートされていません。
- text-column-name
- フルテキスト索引の作成に使用されるテキストを含む列の名前。 列は以下のいずれかのデータ・タイプである必要があります。
- CHAR (FOR BIT DATA)
- VARCHAR (FOR BIT DATA)
- LONG VARCHAR (FOR BIT DATA)
- CLOB
- DBCLOB
- BLOB
- GRAPHIC
- VARGRAPHIC
- LONG VARGRAPHIC
- XML
同じ列に複数の索引が許可されていますが、 これは次のいずれかの条件を満たす場合のみであることに 注意してください。- The index is created on a view
- したがって、
CONTAINS
、SCORE
、またはNUMBEROFMATCHES
検索引数で索引を使用することはできません。 - The index is created on a table
- すべての索引が同期化されている場合は、以下の CREATE INDEX コマンドの詳細で、同じ列に同じプロパティーが設定されています。
- 関数名およびスキーマ
- ATTRIBUTES
- CCSID
- LANGUAGE
- FORMAT
- DOCUMENTMODEL
- INDEX CONFIGURATION
CONTAINS
、SCORE
またはNUMBEROFMATCHES
引数によって選択された索引は問題なく使用することができます。
- function-schema.function-name
- サポートされないタイプの列にあるテキスト文書にアクセスする ために使用されるユーザー定義関数のスキーマおよび名前。 関数は、任意の列タイプを入力パラメーターとして使用して、列タイプの変換を実行します。 これは、 Net Search Extender がサポートするタイプの 1 つとして値を戻します。
- ATTRIBUTES (SQL-column-expression AS Attribute-name, ...)
- 列式の内容がテキスト列に加えて索引付けされることを決定します。 この内容は、検索ステートメントの ATTRIBUTES 節で検索できます。 SQL 列式は、索引が作成された表の非修飾列名を使用して定義する必要があります。 唯一、許可されたデータ・タイプは、DOUBLE です。 Cast 演算子を列式で使用することができますが、Db2 の暗黙的なキャストは可能ではありません。 属性名は、文書モデルの属性名の規則に従う必要があり、
索引のモデル定義ファイル内で定義される他のすべての属性名と区別される必要があります。
以下の規則を使用して、式の属性名を定義します。
- 列式の SQL AS 節で明示的に指定した場合、指定した名前を使用する。 例:
ATTRIBUTES (C1+C2 AS myname)
- 指定された表の列が ASなしで使用される場合は、列の名前が使用されます。 例えば、以下のようにします。
ATTRIBUTES (C1)
- 式が AS を指定せずに使用され、名前付き列を参照しない場合は、CREATE INDEX はエラーを報告します。
例えば、以下のようにします。ATTRIBUTES (CAST(JULIAN_DAY(date) AS DOUBLE) as day, (price1+price2)/2 as avg_price)
単一引用符で囲まなかった属性は、大文字に マップされるため、検索時には大文字で指定する必要があることに注意 してください。
- 列式の SQL AS 節で明示的に指定した場合、指定した名前を使用する。 例:
- CCSID ccsid
- テキスト文書を索引付けする際に使用されるコード化文字セット ID。 デフォルト値は、DB2EXT.DBDEFAULTS ビューからとられます。ここで、DEFAULTNAME='CCSID' です。
列のデータ・タイプがバイナリーである場合は、CCSID のみを設定してください。
- LANGUAGE language
- 言語パラメーターは、索引構成値 IndexStopWords に 0 (索引付け中は ストップワードを無視する) を設定した場合に選択されるストップワード・ディクショナリーの 言語を指定します。 このパラメーターは、タイ語 (TH_TH) ではタイ語の単語の改行を有効にし、トルコ語ではドットとドットなしの「i」の使用を正しく区別するために常に設定する必要があります。
- FORMAT format
- 列内の HTML などのテキスト文書のフォーマット。 この情報は、文書の索引作成時に必要になります。
構造化文書フォーマットの場合、文書モデル・ファイルで情報を指定できます。 文書モデルが指定されない場合、文書のテキストは、デフォルトの文書モデルを使用して索引付けされます。
フォーマット・キーワードが指定されていない場合、デフォルト値は、DEFAULTNAME='FORMAT' である DB2EXT.DBDEFAULTS ビューから取得されます。 Net Search Extender によって設定される初期デフォルトは TEXT です。 データ・タイプ XML の場合、FORMAT XML 指定子は必須です。
- DOCUMENTMODEL documentmodel-name IN modelfilepath
- modelfilepath は、モデル・ファイルの場所を指定します。 modelfilepath は、完全修飾パスである
必要があります。 モデル・ファイルには、FORMAT 節のフォーマット
用のモデル定義が含まれています。 これは、Db2 インスタンス所有者が読み取り可能なものでなければなりません。 文書モデルを使用することにより、文書の特定のセクションを索引付けし、検索することができます。 マークアップ・タグおよびセクション名も、文書モデルで定義できます。 文書モデルは、HTML、XML、GPP 構造をサポートする文書フォーマットに
結合されています。 1 つのモデル・ファイルでは、1 つの文書モデルしか指定できません。
文書モデルは CREATE INDEX コマンドの実行中にのみ読み取られるため、以降の変更はこの索引では認識されないことに注意してください。
パーティション・データベース環境では、 Linux® または UNIX オペレーティング・システム上のすべてのノードで modelfilepath にアクセスできるように、共有ファイル・システムを使用する必要があることに注意してください。 ただし、Windows オペレーティング・システムでは、文書モデル・ファイルの modelfilepath は、各ノードで使用可能なローカル・パスに設定する必要があります。
- USING CCSID ccsid
- モデル・ファイルの内容を解釈する CCSID を指定します。 デフォルト値は、DB2EXT.DBDEFAULTS ビューからとられます。ここで、DEFAULTNAME='MODELCCSID' です。
- UPDATE FREQUENCY
- 索引更新の頻度は、更新が実行される時期を決定します。 ユーザー表への変更が UPDATE MINIMUM オプションによって指定された値より小さい場合は、索引は更新されません。 UPDATE FREQUENCY を指定しないと、デフォルトの NONE が使用され、索引の更新は行われません。 これは、テキスト列に対する
これ以上の変更を想定していない場合や、更新処理を手動制御する
場合に有用です。
D.
索引が更新される曜日。* (毎日) または 0..6 (0=Sunday)H.
索引が更新される時間: * (1 時間ごと) または 0..23M.
索引が更新される時刻 (分): 0..59NONE.
これ以上の索引更新は行われません。 更新は、手作業で開始する必要があります。
UPDATE FREQUENCY パラメーターを使用して自動索引更新をスケジュールしない 場合は、代わりに crontab などのオペレーティング・システムの機能を 使用できます。
- UPDATE MINIMUM minchanges
- 索引が UPDATE FREQUENCY の設定に基づいて更新される前に、
テキスト文書に必要な最小の変更の数。 正の整数値のみが許可されます。 デフォルト値は、DB2EXT.DBDEFAULTS ビューからとられます。ここで、DEFAULTNAME='UPDATEMINIMUM' です。
DB2TEXT UPDATE コマンドを手動で実行した場合は、 この値は、無視されることに注意してください。 増分更新の場合、ログ表およびトリガーがなければ変更の数を利用できないので、 このオプションは、RECREATE INDEX ON UPDATE オプションと併用することはできません。
パーティション・データベース環境の場合、UPDATE MINIMUM は各パーティションでチェックされます。
- REORGANIZE AUTOMATIC | MANUAL
- 更新頻度の設定に基づいて実行される更新では、 REORGANIZE AUTOMATIC が指定されている場合にのみ索引が再編成されます。 このステップは、更新後、
select REORGSUGGESTED from DB2EXT.TEXTINDEXES
の 値に従って自動的に完了します。REORGANIZE MANUAL は、 手動の UPDATE コマンド (REORGANIZE オプションを指定) と一緒でなければ実行できません。
REORGANIZE 節を省略した場合、デフォルトは DB2EXT.DBDEFAULTS ビュー (DEFAULTNAME = 'AUTOMATICREORG')。
- REPLICATION CAPTURE TABLE capture-table-schema.capture-table-name CONTROL TABLE SCHEMA capture-control-schema
- 増分更新処理の場合、それ以外の場合に
索引に対して作成されるログ表またはテキスト保持ステージング表の代わりに、指定されたレプリケーション・キャプチャー表が取られます。 したがって、
schemaname
、tablename
、 およびレプリケーション・キャプチャー表名は、 ローカル Db2 (フェデレーテッド) データベースのオブジェクトに関係しています。capture-control-schema は、レプリケーション・コントロール表のスキーマ名です (例: ローカル Db2 上での IBMSNAP_PRUNE_SET)。 レプリケーション・コントロール表は、レプリケーションのセットアップ後に、ローカル Db2 システム上でニックネームとして使用可能になっている必要があります。
少なくとも、 以下のキャプチャー・コントロール表で使用可能なニックネームがある必要があります。
- IBMSNAP_SIGNAL
- IBMSNAP_PRUNE_SET
- IBMSNAP_PRUNCNTL
- IBMSNAP_REGISTER
- IBMSNAP_REG_SYNC (Db2 データベース以外のリモート・ソースのみ)
Db2 レプリケーション・センターは、リモート・キャプチャー表およびキャプチャー・コントロール表のローカル・ニックネームの作成を自動的に保証しないため、これは手動タスクにすることができます。 この作業は、テキスト索引が作成される表のニックネームを作成することに似ています。
ユーザー表ニックネームとキャプチャー表の主キー列の列名は一致している必要があります。 また、キャプチャー表ニックネームの列 IBMSNAP_OPERATION、IBMSNAP_COMMITSEQ、 および IBMSNAP_INTENTSEQ の名前は変更しないようにしてください。
索引を作成した後、 列名 DB2EXT.TEXTINDEXES(LOGVIEWNAME) と DB2EXT.TEXTINDEXES(LOGVIEWSCHEMA) は両方ともレプリケーション・キャプチャー表のローカル名を参照します。
Net Search Extender には Db2 レプリケーション・センターの機能のすべては必要ないので、 変更データ表 (CD) または整合変更データ (CCD) 表は以下の規則に従っている必要があります。- 変更キャプチャー登録を使用し、 フル・リフレッシュ・コピー・オプションは使用しないでください。
- 変更のキャプチャーを水平サブセット化することは許可されていません。 例えば、トリガーを使用した方法はその一例です。 「Db2 レプリケーションのガイドおよびリファレンス バージョン 8」の第 6 章『レプリケーション環境におけるデータのサブセット化』 を参照してください。
- 列のサブセットの変更の登録が許可されるのは、 主キー列、テキスト列、 および DB2TEXT CREATE INDEX コマンドの属性およびキャッシュ表式に含まれるすべての列が含まれている場合だけです。
- キャプチャー表には主キー列が含まれていなければなりません。 変更後イメージが十分であることに注意してください。
- キャプチャー表は圧縮できません。 各主キーごとに、最新データの入った 1 つの項目が必要です。 ただし、 Net Search Extender を使用するには、完全な履歴が必要です。
- 表は D/I オプションを使用する必要があります。 これにより、ソース表上の主キーへの更新事項をトランスフォームして、 挿入/削除の対にすることができます。
Db2 V9.7 でサポートされているリモート・ソースのバージョンについては、技術サポートのページを参照してください。
注:正しいソース表名を登録表に挿入するようにしてください。 リモート DBMS の種類によって、 リモート表名を使用しなければならない場合と、 ローカル・ニックネームを使用しなければならない場合があります。
- Db2: リモート表の名前 (リモート・サーバー上の表名)
- Db2 以外: ローカル・ニックネーム (フェデレーテッド Db2 データベース内の対応するニックネーム)
ローカル・ユーザーがニックネームを使用してリモート・データ・ソースにアクセスできるようにユーザー・マッピングがなければならず、 リモート・ユーザーは表に対してコントロール特権を持っている必要があります。
Db2 インスタンス所有者ユーザー ID がローカル・ユーザー ID と異なる場合、Db2 インスタンス所有者ユーザー ID 用の追加ユーザー・マッピングが必要です。
指定された基本表名は、1 つのニックネームに対するビューであってはなりません。 それは、ビューは複数のニックネームをカバーすることができ、 複数の CD および CCD 表を含めることもできるからです。 レプリケーション・キャプチャー節には CD または CCD 表を 1 つだけ指定することもできるので、 ニックネームのビューはサポートされていません。 また、リモート・ビューのニックネームは、主キーが欠落しているため、サポートできません。
CD または CCD 表はニックネームでなければならず、ビューまたは別名であってはなりません。
REPLICATION CAPTURE TABLE オプションが create index コマンドで使用されている場合、 COMMITCOUNT オプションは使用できません。
- COMMITCOUNT FOR UPDATE count
- 増分更新処理の場合、コミット・カウントを指定できます。 指定されない場合は、デフォルト値は、DB2EXT.DBDEFAULTS ビューからとられます。ここで、DEFAULTNAME='COMMITCOUNT' です。
索引の COMMITCOUNT FOR UPDATE 値は、
DB2EXT.TEXTINDEXES.COMMITCOUNT
にあります。 これは、ALTER INDEX コマンドを使用して、索引ごとに変更できます。 また、UPDATE FREQUENCY 指定に従ってスケジュール済みの更新処理にも適用されます。 値 0 は、1 つのトランザクションで更新が完了したことを意味します。値> 0 は、1 つのトランザクションで処理する文書の数を指定します。 ゼロ以外 のCOMMITCOUNT
を使用しないことを推奨します。使用する必要がある場合は、 単一の増分更新で実行される即時コミットの数を少数に抑えられるよう、十分大きい 値を設定してください。 各コミットでは、 索引ファイルの移動および索引ログ・ファイルのクリーンアップが実行されますが、これらの処理は、 特に繰り返し実行された場合、非常に大量の時間を要します。COMMITCOUNT
は、索引用に構成されている場合、ログ表にリストされている文書および拡張テキスト保持ステージング・インフラストラクチャーのすべての変更に適用されます。COMMITCOUNT
を設定しない場合、db2ext.textindexes
からのNUMBER_DOCS
パラメーターは更新されません。 したがって、 更新処理中に既に処理された文書の数を表示するには、CONTROL LIST
コマンドを 使用してください。 - RECREATE INDEX ON UPDATE
- これは、増分索引更新を許可せず、
更新操作が実行される際に索引を再作成します (コマンドまたはスケジュールされた更新により)。注: RECREATE INDEX ON UPDATEを指定した場合は、以下のようになります。
- ユーザー表にトリガーは作成されません。
- ログ表は作成されません。
- 拡張テキスト保持ステージング・インフラストラクチャーを索引に対して構成することはできません。
- INDEX DIRECTORY directory
- テキスト索引の保管先ディレクトリー・パス。 ディレクトリーは索引データを含むので、ディレクトリーには、
Db2 インスタンス所有者ユーザー ID 用の読み取り/書き込み、および実行権限があることを確認してください。
デフォルト値は、DB2EXT.DBDEFAULTS ビューからとられます。ここで、DEFAULTNAME=INDEXDIRECTORY' です。 サブディレクトリー
NODE<nr>
が、 サーバーの論理ノード上の索引を区別するために、ディレクトリーの下に作成されます。パーティション・データベース環境では、このディレクトリーはすべての物理パーティション上に存在する必要があることに注意してください。
- WORK DIRECTORY directory
- 別個の作業ディレクトリーをオプションで指定し、索引検索および管理操作時に一時ファイルの保管に使用することができます。 ディレクトリーが存在し、Db2 インスタンス所有者ユーザー ID に対して
読み取り/書き込みおよび実行権限を持っている必要があります。
デフォルト値は、DB2EXT.DBDEFAULTS ビューからとられます。ここで、DEFAULTNAME='WORKDIRECTORY' です。 サブディレクトリー
NODE<nr>
が、 サーバーの論理ノード上の索引を区別するために、ディレクトリーの下に作成されます。パーティション・データベース環境では、このディレクトリーはすべての物理パーティション上に存在する必要があることに注意してください。
WORK DIRECTORY が指定されていない場合、 work というディレクトリーが INDEX DIRECTORYの下に作成されます。
WORK DIRECTORY を指定する場合、そのディレクトリーを索引ディレクトリーと同じ物理ファイル・システム上に置くことを強くお勧めします。 この推奨事項に従わない場合、作業ディレクトリーからのファイルをリネームではなく索引ディレクトリーへ物理的にコピーする必要があるため、膨大な索引更新によるパフォーマンスの低下をもたらします。
注: INDEX DIRECTORY および WORK DIRECTORY で作成されたファイルは、インスタンス所有者に対して設定された umask 制限に従います。 それらの umask 制限では、fenced ユーザーのグループ読み取り/書き込みアクセスを必ず許可するようにしてください。 - ADMINISTRATION TABLES IN table-space-name
- 索引用に作成された管理表のための REGULAR 表スペースの名前。 表スペースが存在する必要があります。 指定されない場合は、索引が基本表上に作成されていれば、ユーザー表の表スペースが選択されます。
ニックネームまたはビューの場合は、デフォルトの表スペースが Db2 によって選択されます。
パーティション・データベース環境でビュー、またはニックネームのテキスト索引を作成する場合や、ストアード・プロシージャー検索用のテキスト索引を作成する場合、 管理表用の表スペースは、単一ノード上に指定されている必要があり、 このノード上で明示的に呼び出される必要があります。
適切なノードと接続するためには、DB2NODE 環境変数を使用します。 範囲パーティション表での索引の作成で、ADMINISTRATION TABLES IN 節は必須であるという点に注意してください。 この節を含めないと、CREATE INDEX コマンドでエラー CTE0150E が戻されます。
- CACHE TABLE (SQL-column-expression-list)
- 指定された列式からなるキャッシュ表が索引に追加して作成されます。 このキャッシュは、
フルテキスト検索の結果を Db2 表に結合しないで、
ストアード・プロシージャー検索を介して戻すために使用されます。 CONTAINS 関数をもったフルテキスト索引を使用する通常の Db2 検索は、常に可能です。索引が作成される表の非修飾列名を使用して SQL 列式を定義します。 許可される SQL 列式タイプは、すべて組み込み、およびユーザー定義特殊タイプです。 結果セットの列名は、次の規則を使用して決定されます。
- 列式の SQL
AS
節で明示的に指定された場合、指定された名前が使用される。 例えば、以下のようにします。CACHE TABLE (C1+C2 AS myname)
- 指定された表の列が
AS
節を指定せずに使用された場合、列の名前が使用される。 例えば、以下のようにします。CACHE TABLE(C1)
- 式が
AS
を指定せずに使用され、名前付き列を参照しない場合は、CREATE INDEX はエラーを報告します。 - 列名の重複は許可されていません。
CLOB
データ・タイプはキャッシュ・データ・タイプとしてサポートされていません。 CLOB データ・タイプはVARCHARS
にキャストする必要があります。注: 結果セットの列名が離接していない場合、CREATE INDEX
コマンドはエラーを返すことに注意してください。 また、キャッシュ表は、作成後、暗黙的にはアクティブ化されません。例えばストアード・プロシージャーによる検索は、DB2TEXT ACTIVATE CACHE
が実行されるまでは、不可能です。このオプションは、ユーザー表が単一パーティション表スペースに保管された場合にのみ、パーティション・データベース環境で使用できます。 テキスト保持ステージング・インフラストラクチャーのデフォルト構成が、表に対して ON に設定され、その構成がテキスト索引に対して手動で無効にされていない場合、このオプションは使用できません。
- 列式の SQL
- PERSISTENT IN directory
- キャッシュも永続的に作成されるように指定します。 永続キャッシュは
非アクティブ化やシステム再始動の後で、非永続キャッシュよりも高速に再アクティブ化
を実行できます。 永続キャッシュは、指定されたディレクトリーに保管されます。
ディレクトリーが指定されていない場合、デフォルト値は
db2ext.dbdefaults
ビューからとられます。ここで、DEFAULTNAME='CACHEDIRECTORY'
です。 - TEMPORARY
- キャッシュが永続的に保管されないように指定します。 PERSISTENT または TEMPORARY が指定されない場合、デフォルト値は、DB2EXT.DBDEFAULTS ビューからとられます。ここで、DEFAULTNAME='USEPERSISTENTCACHE' です。
- MAXIMUM CACHE SIZE memsize
- DB2TEXT ACTIVATE CACHE 時に作成されるキャッシュ済み表の
最大サイズを指定します。 memsize パラメーターは、メガバイト単位で正の整数として指定する必要があります。 memsize にはデフォルト値がありません。 整数が小さ過ぎると、ACTIVATE CACHE コマンドは失敗します。 実際の
キャッシュ・サイズは ACTIVATE CACHE コマンド時に計算されます。異なる 32 ビット・プラットフォームごとの 最大キャッシュ・サイズの制限は、以下のとおりです。
- Windows: 1024 MB (1 GB = 1073741824 バイト)
- Linux: 2048 MB (2 GB = 2147483647 バイト)
64 ビット・インストールでは、最大キャッシュ・サイズの制限は、 使用可能なメモリーに依存します。
- PCTFREE percentage
- 指定した割合のキャッシュを文書の追加のために、フリーのまま保持されるように指定します。 パーセンテージは、100 より小さく、0 以上の整数値でなければなりません。 指定しない場合、デフォルトは
db2ext.dbdefaults
ビューから取得されます。ここで、DEFAULTNAME='PCTFREE'
のデフォルトは 50% です。 - INITIAL SEARCH RESULT ORDER (SQL-order-by-list)
- 初期の索引付け時にユーザー表の内容を検索するために使用される順序を指定します。 このオプションを使用して、フルテキスト検索結果の動的ランキングをスキップすると、キャッシュ結果表に保管されているとおりの、
索引付けされた順序で文書が戻されます。
定義済みの検索結果順序付けを使用できるのは、 ストアード・プロシージャー検索インターフェースを使用している場合 のみです。 例:
INITIAL RESULT ORDER(length(column1) asc, column2+column3 desc)
。定義済みの検索結果順序付けは、SQL スカラー検索関数および表値関数では実装され ていません。
注: インクリメンタル更新後は、新規または変更された文書の索引順序を保証 できません 。 - KEY COLUMNS FOR INDEX ON VIEW (SQL-columnname-list)
- ビュー上に索引が作成された場合は、KEY COLUMNS FOR INDEX ON VIEW 節を指定する必要があります。
作成されない場合は、指定「しないで」ください。 列名のリストは、ビュー内の行を「一意に」識別する列を指定します。
この一意性は、主キーの場合とは異なって Db2 によるチェックができないので、 ユーザーが同等の一意性を保証する責任を持っています。 指定された列は、索引用のログ表の PK01 列に記入するために使用されます。
- INDEX CONFIGURATION (option-value), ...
- 索引構成値は次のとおりです。 デフォルト値は、下線が引かれています。
オプション 値 説明 TreatNumbersAsWords 0 または 1 1 を設定した場合は、数字のシーケンスが文字に隣接している場合でも、この数字のシーケンスを 別個のワードとして解釈する。 デフォルトの 0 は、例えば tea42at5 が 1 つのワードと 見なされることを意味します。 IndexStopWords 0 または 1 索引付け中にストップワードを無視するか、考慮する。 デフォルトの 1 は、 ストップワードを含むすべてのテキストを索引付けします。 現在、ストップワード・リストは、ディレクトリー <instance>/sqllib/db2ext/resources
内の UCS-2 ファイル<language>.tsw
です。 このファイルを変更しても、索引作成後は影響はない。 また、<language>
は CREATE INDEX コマンドからの LANGUAGE 値であることにも注意してください。UpdateDelay 秒 キャプチャー表なしの増分更新の所要時間を秒単位で指定する。 この所要時間を超過した古い項目だけが、ログ表から取り去られる。 これは、更新が失われないようにするためです。 例えば、ユーザー・トランザクションが更新コマンドを妨害するトランザクション・シナリオで、索引に反映されない変更を文書化します。 したがって、UpdateDelay パラメーターは、 索引を作成した表に対して実行される、 ユーザー書き込みトランザクションの最大所要時間に設定する必要がある。 IgnoreEmptyDocs 0 または 1 IgnoreEmptyDocs を 1 に設定した場合、空の文書 (長さが 0 または NULL 値の内容) は索引に表示されません。 このオプションを使用した場合、内容が NULL (空) の文書は、 次の増分更新によって索引から削除されます。 補助ログ ON または OFF トリガーによって認識されない変更を取り込む追加のログ・インフラストラクチャーの作成を制御します。 範囲パーティション表のデフォルト設定は ON で、それ以外は OFF です。 非範囲パーティション表に対する AuxLogNorm および範囲パーティション表に対する AuxLogPart の設定について、デフォルト表にあるデフォルト値を変更することができます。 - CONNECT TO database-name
- このコマンドのターゲットであるデータベースの名前。 DB2DBDFT が設定されており、 ユーザーがサーバーでコマンドを実行している場合は、 このパラメーターを省略できます。 ユーザー ID には必須 Db2 許可がなければならないことに注意してください。
- USER userid USING password
- userid および password を使用してデータベースに接続します。 指定しない場合は、パスワードなしで現行ユーザー ID から接続が試行されます。
- Changes to the database
- Net Search Extender カタログ・ビューを変更します。
- 指定された表スペースに索引ログ表を作成します。 これは、RECREATE INDEX オプションが指定されておらず、 キャプチャー表も指定されていません。
- 指定された表スペースに索引イベント表を作成します。
- 最初の更新の実行時まで据え置き: ユーザー・テキスト表上にトリガーを作成します (RECREATE INDEX が指定されておらず、キャプチャー表も使用されていない場合のみ)。
- レプリケーション・キャプチャー表が使用されている場合、
次の変更がキャプチャー・コントロール表に加えられます。
- IBMSNAP_PRUNCTNL および IBMSNAP_PRUNE_SET 表への挿入
- APPLY_QUAL = 'NSE' | | <Db2 インスタンス実行中の NSE>
- SET_NAME = < 内部索引 ID>
- TARGET_SERVER = <Db2 データベース名ターゲットから DB2TEXT 操作>
- テキスト保持ステージング・インフラストラクチャーが索引に対して構成されている場合、文書の変更情報を取り込むためにアンカー表およびステージング表が作成されます。
- Changes to the shared memory
- ACTIVATE の実行時まで据え置き: CACHE TABLE 節が使用された場合、 結果表のキャッシュは、共有メモリー に作成されます。
- Changes to the file system
- サブディレクトリー
NODE<nr>
が、索引、作業、およびキャッシュ・ディレクトリーの下に作成されます。 - ディレクトリー internal_index_name は indexdirectory/NODE<nr> の下に作成されます。ここで、 indexdirectory はこのコマンドの対応するパラメーターを指し、
NODE<nr>
はパーティション・データベース環境のパーティション番号に関連しています。
- サブディレクトリー
使用上の注意
フルテキスト索引の作成には、ユーザー表上の主キーが必要です。 Db2 Net Search Extender バージョン 9.1 以降では、マルチコラム Db2 主キーをタイプの制限なしで使用できます。 しかし、表値検索を使用する場合、コンパウンド主キーは許可されません。
- ATTRIBUTES、CACHE TABLE および INITIAL SEARCH RESULT ORDER の SQL 式の 合計サイズは、24 K バイトを超えてはなりません。
- 初期の索引更新は、常に 1 つの論理トランザクションとして実行されるので、この場合のコミット・カウントはありません。
Windows プラットフォームでは、 modelfilepath はローカル・ファイル・システム上になければなりません。 Windows ネットワークにマップされたドライブはサポートされていません。
主キーが複数の列で構成されている場合は、主キー定義で指定されている列の順序が、 CREATE TABLE ステートメントで指定されている順序とまったく同じであることを確認してください。
索引の作成後は、 主キー列またはビュー・キー列の長さを ALTER TABLE コマンドによって変更してはなりません。
ユーザー表、フルテキスト索引およびキャッシュ結果表の間の同期は、update index コマンド中に完了します。