ジオデータベースのフルテキスト インデックス

フルテキスト インデックスは、個々の単語 (トークン) とそのテキスト フィールド内の位置に関する情報を保存する特殊なインデックスです。 フルテキスト インデックスを作成すると、大量のテキスト コンテンツから特定の単語、フレーズ、表現を高速かつ効率的に検索できます。

フルテキスト インデックスの目的と利点

フルテキスト インデックスの主な目的は、テキスト データを迅速かつ正確に検索および取得する機能を強化することです。 主な利点は次のとおりです。

  • 効率的なテキスト検索 - フルテキスト インデックスを使用すると、通常の属性インデックスよりもテキスト フィールド内を高速に検索できます。 これは、テキスト検索操作に最適化されており、テーブル全体をスキャンする必要性が減るためです。
  • 複雑なクエリー機能 - フルテキスト インデックスは、フレーズの検索、近接検索、関連性による結果のランク付けなどの複雑なクエリーをサポートしています。
  • パフォーマンスの向上 - フルテキスト インデックスは、テキスト データのインデックスを作成することで、検索操作のパフォーマンスを大幅に向上できます。 これは、テキスト検索にリソースを大量に消費する可能性がある大規模なデータセットにとって特に重要です。
  • 複数フィールドのサポート - SQL Server では、1 つのフルテキスト インデックスにテーブルの複数のフィールドを含めることができるため、複数の列にわたる包括的なテキスト検索を行うことができます。

フルテキスト インデックスを使用する利点を説明するために、次のたとえ話を考えてみます。

本の目次は、各章がどこにあるのかを示します。 第 7 章を​​見つける場合、目次を確認してそのページに移動し、求める内容を見つけることができます。 「人類」という単語を含む重要な引用文を思い出そうとしても、どの章にあるかがわからない場合、目次は役に立ちません。 本にフルテキスト インデックスがない限り、引用文を見つけるには、すべてのページをめくらなければなりません。 フルテキスト インデックスは、本にある各単語をページ番号とともにリストします。 これにより、「人類」のような単語をすばやく検索したり、「人類にとっての大きな飛躍」のようなフレーズを見つけることができます。

テキスト フィールド内で複雑なテキスト検索を実行する必要がある場合は、フルテキスト インデックスの使用を検討してください。 具体的には、フルテキスト インデックスは次の場合に特に役立ちます。

  • 1 つの単語の検索 - 「ハリケーン」や「フロリダ」など、テキスト フィールド内の個々の単語を検索します。
  • フレーズ検索 - 単語のグループであるフレーズを検索します。 フレーズを使用して検索するには、"避難ルート" のように単語のグループを二重引用符で囲みます。

次のシナリオは、フルテキスト インデックスの有用性を示す例です。

ガス会社は、パイプライン ネットワークの検査レポートと安全ドキュメントを追跡しています。 検査レポート、安全の説明、保守ログが含まれているジオデータベースのテキスト フィールドにフルテキスト インデックスを適用すると、「ガス漏れ」や「パイプラインの腐食」などの用語のフレーズに対するクエリーをフルテキスト検索でサポートできるようになり、安全チェックと保守計画の速度と精度が向上します。

ガス会社のパイプライン ネットワーク

ユーティリティー ネットワークの作成ユーティリティー ネットワークのガスの構成に関する詳細

フルテキスト インデックスは、データベース内のテキスト検索機能を強化するよう設計されています。 特定の列に焦点を合わせる属性インデックスや地理データを処理する空間インデックスとは異なり、フルテキスト インデックスは、すべての単語のインデックスを作成することでテキスト フィールド内の検索を最適化します。 これにより、効率的な検索やフレーズ検索などの複雑なクエリーが実現し、関連するテキスト データを取得する際のパフォーマンスが向上します。

属性インデックス、フルテキスト インデックス、空間インデックスのテーブルの比較については、「ジオデータベースのインデックス」をご参照ください。

フルテキスト インデックスの機能

フルテキスト インデックスは、大量のテキストベースのデータをすばやく検索できる強力なツールです。 フィールドでフルテキスト インデックスが作成されると、テキスト検索を使用して、大量のテキスト コンテンツから特定の単語、フレーズ、表現を高速かつ効率的に検索できます。

テキスト検索は、次のような ArcGIS のさまざまな部分で利用できます。

  • ArcGIS Portal Directory REST API - Web サービスを通じてデータをクエリーします。
  • ArcObjects - プログラムによって GIS データにアクセスして操作します。
  • 場所検索ウィンドウ - ArcGIS Pro で、[場所検索] ウィンドウを使用し、フルテキスト検索モードとして [フルテキストが次で始まる] または [フルテキストが次と等しい] を検索対象のフィールドに適用します。
    場所検索ウィンドウで場所検索ビューを構成するときのフルテキスト検索モード オプション

フルテキスト検索モードおよび場所検索ウィンドウを使用した構成済みのフィーチャまたはレコードの検索方法の詳細

注意:

ArcGIS Pro は、非常に基本的なフルテキスト インデックスを作成する機能を提供します。 フルテキスト インデックスの管理とカスタマイズするためのオプションは、DBMS ツールを使用して DBMS レベルで手動で行う必要があります。

次のシナリオは、フルテキスト インデックスを作成、保存、使用して、テキスト データをすばやく正確に検索および取得する方法を、俯瞰的に簡素化したレベルでシミュレートしています。

GIS.Storm_Damage_Assessment テーブルには、最近発生した暴風雨の後に、建物の所有者が報告した損害のタイプ、重大度、説明を詳述する複数の属性フィールドが含まれています。 このテーブルには表示されていませんが、ほかにも所有者の住所や連絡先情報などのフィールドが含まれています。

フルテキスト インデックスを適用する前の GIS.Storm_Damage_Assessment テーブル

これらの建物所有者の保険代理店として、Damage _Description フィールドにフルテキスト インデックスを設定すると、Gutters (雨どい)Shingles (屋根板)Window (窓)Roof (屋根)Leaks (雨漏れ) などの主要な用語をすばやく検索することができ、具体的な損害や必要な修理作業に基づいて、建物所有者に最も適切な契約業者を推薦できます。

  1. フルテキスト インデックスを追加ツールを使用して、フルテキスト インデックスを作成します。 この例では、テーブルの名前 GIS.Storm_Damage_Assessment と、インデックスを作成するテキスト データが含まれているフィールド Damage_Description が指定されています。
    Damage_Description フィールドへのフルテキスト インデックスの追加
  2. インデックスの作成では、指定したフィールドのテキストを個々のキーワード (トークン) に分解し、整理、追跡してから、すばやくアクセスできるように各単語の正確な位置をテキスト フィールドにマッピングします。

    ケース スタディ:
    次の図は、フルテキスト インデックスを個々のキーワードに分解する方法と、その位置をテキスト フィールドにマッピングする方法を、簡素化された概要レベルでシミュレートしたものです。

    この例では、GIS.Storm_Damage_Assessment テーブルにおいて、Damage_Description フィールドの下の 1 行目にある最初の属性値は、Missing or Lifted Shingles (欠けているか剥がれている屋根板) です。 このフルテキスト インデックスを作成する方法のシミュレーションとして、このテキストは次のキーワードに分解されて、アルファベット順に整理され、指定した Damage_Description テキスト フィールドで各用語が表示される正確な位置が記録されます。

    • Missing (欠けている) - 行 1、4、8、9 に 4 回表示されています
    • Lifted (剥がれている) - 行 1 と 9 に 2 回表示されています
    • Shingles (屋根板) - 行 1、3、4、5、8、9 に 6 回表示されています
    フルテキスト インデックス
    インデックスは、インデックス付けされたフィールドにあるキーワードすべての用語集として機能し、各単語が表示される正確な位置を整理および追跡して、元のインデックスに反映します。

    このプロセスは、指定したテキスト フィールド内のすべてのテキストがキーワードに分解され、整理され、各用語が表示される位置が記録されるまで続行されます。

  3. Damage_Description フィールドのフルテキスト インデックスの作成が完了すると、[場所検索] ウィンドウを使用し、フルテキスト検索モードとして [フルテキストが次と等しい]Damage_Description フィールドに適用できます。

    場所検索ウィンドウで、フルテキスト インデックスを含むフィールドの検索モードとしてフルテキストが次と等しいを設定

  4. この例では、[場所検索] ウィンドウで、単語「Shingles (屋根板)」を検索できます。

    フルテキスト インデックスを適用しない場合、検索はテーブル全体のスキャンを行う時間のかかる処理となります。 しかし、Damage_Description フィールドでフルテキスト インデックスが作成されたため、場所検索ウィンドウで、このフィールドを 1 つの単語「Shingles (屋根板)」でクエリーできます。 次に示すように、[場所検索] ウィンドウでは、フルテキスト検索を使用して、用語「Shingles」をすばやく特定し、そのキーワードがインデックス付けされたフィールドに表示されるすべての行を検索します。

    フルテキスト インデックスが作成されたフィールドのクエリー結果

    検索の結果から、屋根板に関係した損害レポートをすばやく特定できるため、建物の所有者は、レポートされた具体的な損害に基づいて最適な契約業者に連絡することができます。

ArcGIS のフルテキスト インデックス管理

ArcGIS Pro がフルテキスト インデックスを作成する方法は、ジオデータベースのタイプによって異なります。エンタープライズ ジオデータベースの場合は、使用するデータベース管理システムによって異なります。 次の 2 つのセクションでは、これらの機能の違いについて説明します。

注意:

フルテキスト インデックスを使用する場合、以下の点を考慮します。

  • フルテキスト インデックスは、ファイル ジオデータベースまたは Db2 のエンタープライズ ジオデータベースではサポートされていません。
  • 1 つのインデックスと複数のインデックス - RDBMS によって、テーブルごとに 1 つのフルテキスト インデックスのみがサポートされている場合と、複数のインデックスを使用できる場合があります。
  • 保守 - フルテキスト インデックスは、基礎となるデータ ソースで保守する必要があります。 データの変更を反映するよう更新されため、検索パフォーマンスに影響を与える可能性があります。

モバイル ジオデータベースのフルテキスト インデックス

フルテキスト インデックスは、モバイル ジオデータベースでサポートされています。 モバイル ジオデータベースは SQLite データベースに格納され、このデータベースには FTS5 拡張機能がネイティブに含まれています。 SQLite FTS5 (フルテキスト検索) 拡張機能は、モバイル ジオデータベースのフルテキスト インデックス作成に使用され、フルテキスト インデックスを管理するための仮想テーブルと追加のサイド テーブルを作成します。 つまり、モバイル ジオデータベースにも、FTS5 拡張機能がネイティブに備わっています。

エンタープライズ ジオデータベースのフルテキスト インデックス

ArcGIS Pro は、サポート対象である次の各データベース管理システム プラットフォームで、ジオデータベース内のテーブルまたはフィーチャクラスのフルテキスト インデックスをサポートしています。プラットフォームごとに固有の構成があります。

  • Oracle
    • Unicode 以外のテキスト フィールドのフルテキスト インデックスをサポートしています。
    • インデックス作成のために、Unicode フィールドを Unicode 以外に変換する必要があります。
      ヒント:

      テキスト フィールドの移行ツールを使用して、既存の有効な Unicode テキスト フィールド タイプを Unicode 以外に移行します。 入力データセットは、Oracle のエンタープライズ ジオデータベースのものである必要があり、Unicode 以外のテキスト フィールド タイプに移行できる有効な Unicode テキスト フィールド タイプとしては次のものがあります。

      • NVARCHAR2 は VARCHAR2 に変換されます。
      • NCHAR は VARCHAR2 に変換されます。
      • NCLOB は CLOB に変換されます。

  • PostgreSQL
    • フィールドごとに 1 つのフルテキスト インデックスの作成をサポートしています。
  • SQL Server
    • フルテキスト検索機能は、SQL Server データベース エンジンのオプション コンポーネントであり、次の要件に進む前に、まず有効にする必要があります。 SQL Server インスタンスでフルテキスト機能がまだ有効化されていない場合は、SQL Server のセットアップ プロセスをもう一度実行する必要があります。
    • SQL Server のフルテキスト カタログは、1 つ以上のフルテキスト インデックスの仮想コンテナーです。 SQL Server を使用して、フルテキスト インデックスを作成する各 SQL Server データベースに、少なくとも 1 つのフルテキスト カタログを作成します。

      各データベースには複数のフルテキスト カタログを含めることができますが、フルテキスト インデックスは 1 つのフルテキスト カタログのみに属する必要があります。 デフォルトのフルテキスト カタログを指定できます。これは、フルテキスト カタログが指定されていない場合に使用される

    • フルテキスト インデックスを作成する各ユーザーには、インデックスが属するフルテキスト カタログに対する REFERENCES 権限を付与する必要があります。
    • SQL Server は、テーブルごとに 1 つのフルテキスト インデックスの作成をサポートしています。インデックスには、複数のフィールドを含めることができます。
  • SAP HANA
    • PostgreSQL と同様に、フィールドあたり 1 つのフルテキスト インデックスをサポートしています。

フルテキスト インデックスの追加

フルテキスト インデックスを追加ツールを使用して、指定したテキスト フィールドにフルテキスト インデックスを追加し、モバイル ジオデータベースまたはエンタープライズ ジオデータベースで個々の列または複数の列による検索をサポートするには、次の手順に従います。

注意:

[フルテキスト インデックスを追加 (Add Full-Text Index)] ツールは、ファイル ジオデータベースまたは Db2 のエンタープライズ ジオデータベースではサポートされていません。

  1. [解析] タブに移動し、[ジオプロセシング] グループの [ツール] をクリックして、フルテキスト インデックスを追加ジオプロセシング ツールを開きます。 または、[インデックス] ツールボックスの [データ管理ツール] ツールセットでツールを検索することもできます。
    解析タブ、ツール、ジオプロセシングの下にあるフルテキスト インデックスを追加ツール

    フルテキスト インデックスを追加ジオプロセシング ツール ダイアログ ボックスが開き、デフォルト設定が表示されます。

    フルテキスト インデックスを追加ジオプロセシング ツール ダイアログ ボックス

  2. [入力テーブル] で、ドロップダウン メニューから 1 つのデータセットを選択するか、参照ボタン 参照 を使用して、フルテキスト インデックスを追加するフィーチャクラスまたはテーブルを選択します。
  3. [インデックスを追加するフィールド] で、フルテキスト インデックスを適用する 1 つのフィールドまたは複数のフィールドを選択します。
    インデックスを追加するフィールド パラメーター
    注意:

    一部のデータベースは、フルテキスト インデックスの作成に対して 1 つのフィールドのみをサポートしています。 複数のフィールドを使用したフルテキスト インデックスの作成は、データベースによってサポートが異なります。

  4. 必要に応じて、このパラメーターの名前は [入力テーブル] のソースによって変化します。
    • [フルテキスト インデックス名] - 作成するインデックスの名前を指定します。 [フルテキスト インデックス名] パラメーターはデフォルトで表示されます。
      フルテキスト インデックス名
      注意:

      SQL ServerSQLite、およびモバイル ジオデータベースの場合、[フルテキスト インデックス名] パラメーターは無視されます。

    • [フルテキスト カタログ名] - [フルテキスト カタログ名] パラメーターに使用する SQL Server のフルテキスト カタログの名前を選択します。 [フルテキスト カタログ名] オプションは、SQL Server にのみ適用されます。
      フルテキスト カタログ名
      注意:

      [フルテキスト カタログ名] を指定しない場合、ツールはデータベースで定義されているデフォルトのフルテキスト カタログを使用しようとします (アクセス可能な場合)。 それ以外の場合は、ドロップダウン リストからフルテキスト カタログを選択します。 ドロップダウン リストには、接続されたユーザーがアクセスできるすべてのフルテキスト カタログが含まれています。

  5. [実行] をクリックして、フルテキスト インデックスをフィールドに追加します。

    注意:

    また、[実行] ボタンの横にあるドロップダウン メニューを使用して、[スケジュール実行] を選択し、必要に応じた頻度でツールを後で実行することもできます。

    スケジュール実行

    ジオプロセシング ツールのスケジューリングの詳細

フルテキスト インデックスを追加ツールが完了したら、テーブルまたはフィーチャクラスのプロパティ ダイアログ ボックスの [インデックス] タブに、[フルテキスト インデックス名] が表示されます。

フルテキスト インデックスの更新時期

フルテキスト インデックスは RDBMS によって保守されますが、データの変更を反映するよう定期的に更新して、検索で正確な結果が返されるようにする必要があります。 フルテキスト インデックスの更新頻度は、データに加えられた編集の量とデータベース構成によって異なります。 エンタープライズ ジオデータベースでのフルテキスト インデックスの管理、更新、再構築は、DBMS ツールを使用して DBMS レベルで手動で行います。

モバイル ジオデータベースでは、SQLite FTS5 (フルテキスト検索) 拡張機能の使用により、基になるデータが変更されたときに自動更新される仮想テーブルが作成されて、手動でのインデックスの再構築が不要になるため、効率的なフルテキスト検索を実行できます。

関連トピック