Net Search Extender の主要な概念

Net Search Extender は、 Db2® データベース、その他のデータベース、およびファイル・システムに保管されているフルテキスト文書を SQL 照会を使用して検索する方法をユーザーおよびアプリケーション・プログラマーに提供します。

重要: Net Search Extender は非推奨になりました。 この使用は推奨されておらず、将来のリリースではサポートされなくなる予定です。 Db2 データベースに保管されているフルテキスト文書を SQL ステートメントおよび XQuery ステートメントを使用して検索する高速かつ用途の広い方法として、Db2 Text Search を使用してください。 詳しくは、 Net Search Extender から Db2 Text Search へのマイグレーションの概要 に関するトピックを参照してください。

Net Search Extenderの機能を完全に理解するには、重要な用語と使用可能なさまざまなオプションを理解する必要があります。 Db2 データベースの 概念および用語の基礎的な知識も必要です。

基本的に、 Net Search Extender は、データベース表の列に保持されている テキスト文書 を検索します。

テキスト文書は、一意に識別可能でなければなりません。 Net Search Extender は、この目的のために表の 主キー を使用します。

文書はさまざまなフォーマットで保管できます。 フォーマットには、非構造化プレーン・テキスト、構造化テキスト (HTML や XML など)、または独自文書フォーマット (PDF や Microsoft Office 文書フォーマットなど) のいずれかが含まれます。 独自文書フォーマットの 場合は、追加のフィルター・ソフトウェアが必要であり、別途ライセンス交付を受けなければならない可能性があります。

かなりの時間がかかる照会時にテキスト文書を順次検索するのではなく、 Net Search Extender は、文書を効率的に検索できるようにするために テキスト索引 を作成します。

テキスト索引は、テキスト文書から抽出された重要な用語で構成されます。

図 1. テキスト索引の作成
テキスト索引の作成

テキスト索引作成は、 索引のロケーションのような、索引のプロパティーの定義および宣言を行う処理です。 作成終了時点のテキスト索引にはまだデータが含まれていません。 索引更新は、 テキスト索引に条件および文書に関するデータを追加する処理です。 最初の索引更新で、テキスト列のすべてのテキスト文書に関する 情報が索引に追加されます。 最初の更新は、初期更新と 呼ばれます。

検索にテキスト索引を使用することによって、 表とテキスト索引との間の同期を考慮する必要がでてきます。 理由は、テキスト文書の追加、削除、 および更新などの表に対する後からの変更が、 テキスト索引に反映される必要があるためです。 これらの変更は、増分更新でテキスト索引に適用されます。

Net Search Extender は、テキスト索引をソース表と同期する 2 つのオプションをサポートします。 Net Search Extender での基本的な同期処理は、新規の文書、 変更や削除された文書に関する情報を自動的にログ表に保管するトリガーに基づいて行われます。 それぞれのテキスト索引ごとに 1 つのログ表が存在します。

図 2. トリガーによる増分更新処理
トリガーによるインクリメンタル更新

基本オプションは、トリガーのみに基づいて行われます。そのため、トリガーによって認識されない更新は無視されます。例えば、LOAD コマンドを使用してデータをロードする場合や、レンジ・パーティション表に対して範囲をアタッチ、またはデタッチする場合です。 拡張同期オプションを使用すると、そのような変更も取り込むことができます。これは、新規文書および削除された文書についての情報を保管するためのテキスト保持ステージング表を追加することによって、保全性処理により可能になります。一方、ログ表には、トリガーによって取り込まれた変更済み文書が保管されます。

図 3. トリガーと整合性処理によるインクリメンタル更新

手動または自動オプションを使用して、 テキスト索引を更新できます。 自動オプションでは、指定された日付および時刻による 更新スケジュールを使用します。

これらのどちらのオプションを使用しても、 テキスト文書の更新、削除、および挿入を行うトランザクションの範囲内で、 テキスト索引が同期化されることはありません。 Net Search Extender の非同期テキスト索引付け機能により、パフォーマンスと並行性が向上します。 別々のトランザクション内で、 索引の非常に小さな部分のコピーに対して更新が行われます。 オリジナルに代わってコピーが置かれる非常に短い間だけ、 索引に読み取りアクセスのロックがかけられるに過ぎません。 これは検索操作には表示されません。詳しくは、 Net Search Extender インスタンス・サービス を参照してください。

テキスト索引は、索引ファイルのロケーションおよび自動更新プロパティーなどの、 特定のプロパティーをもっています。 必要なら、プロパティーの一部を変更できます。 これは索引の変更と呼ばれます。 索引を変更しても 索引データは変更されません。

そのようなプロパティーの 1 つに、ORDER BY 句で表の列のテキスト索引を事前ソートするかどうかというものがあります。 このような場合、初期更新を行うと、指定した順序でテキスト文書に索引が付けられて、 検索結果がこの順序で戻されます。

例えば、価格で事前ソートされた本の要約を指定できます。 リレーショナル・データベース・システムに関する本で一番安いものを探す場合は、 テキスト検索を制限して一番安い最初の数冊の本だけを戻すようにすることができます。 ただし、事前ソートされた索引がないと、すべての本を検索し、 これらの本と一番安い本とを結合する必要があります。 この場合は、操作に多くの時間がかかります。

Net Search Extender では、テキスト列ごとにいくつかの事前ソート索引を使用できます。 例えば、1 つ目の索引で、出版の日付に従って本の事前ソートを行い、 2 つ目の索引で、価格に従って本の事前ソートを行うことができます。

通常、テキスト索引を作成した後の最初の更新が初期更新になり、 それ以降は増分更新になります。 ただし、事前ソート済み索引を使用して作業を行う場合は、 更新の際に順序を維持する必要があります。 RECREATE INDEX ON UPDATE オプションを使用すると、 この処理を行うことができます。 このオプションでは、更新が行われるたびに索引がすべて再作成されます。

テキスト索引の更新が終わると、以下のいずれかのオプションを使用して、 検索を行うことができます。
  • SQL スカラー検索関数
  • ストアード・プロシージャー検索
  • SQL 表値関数
検索オプションにはいろいろな操作特性があります。 以下のセクションでこれらのオプションを説明します。