ArcSDE XML 列をサポートする Oracle データベースの設定
ArcSDE XML 列では Oracle とともにデフォルトでインストールされる Oracle Text コンポーネントが使用されます。使用するには、このコンポーネントに対する権限をユーザに与える必要があります。その後、データベースおよび ArcSDE を適切に設定および管理して、検索結果とパフォーマンスを最適にする必要があります。特に、英語以外の言語が格納されている XML ドキュメントを使用する場合は、英語以外の言語で記述された XML 列を検出できるようにしておく必要があります。
適切なパフォーマンスを維持するには、テキスト インデックスを正しく管理することも重要です。ArcSDE for Oracle には、XML データを格納するようにデータベースを設定するための 2 つのスクリプトがあります。これらのスクリプトの詳細については、「ArcSDE XML 格納用に Oracle インスタンスをチューニングするためのスクリプト」をご参照ください。
XML 列の内容を使用してテーブルを検索する場合は、データベースの次の情報を確認してください。
- テキスト インデックスによる言語分析に使用されるデフォルトのレクサー
- デフォルトのワードリスト設定
- システムで提供されるテキスト オブジェクト
- データベースのデフォルトのストップリスト
現在のデフォルト設定が XML ドキュメントの言語に対して適切ではなく、既存のカスタム テキスト設定も使用できない場合は、XML 列を作成する前に、XML ドキュメントを正しくインデックス構築して検索するカスタム テキスト設定を作成し、ArcSDE の DBTUNE パラメータ XML_IDX_INDEX_TEXT を使用してこのカスタム設定を参照する必要があります。
使用する XML ドキュメントのインデックス構築に使用される設定をカスタマイズすることもできます。そのためには、Oracle で適切な設定を作成し、ArcSDE の DBTUNE パラメータ XML_IDX_INDEX_TEXT を使用してその設定を参照する必要があります。そのうえで、XML 列を作成するときに、カスタムの XML_IDX_INDEX_TEXT パラメータを含む DBTUNE キーワードを使用します。ArcIMS メタデータ サービスの場合は、ArcXML 構成ファイルで DBTUNE パラメータを参照できます。
句読点のインデックス化を変更するときは注意が必要です。XML ドキュメントのすべてのテキストをインデックス化する際に同じ設定が使用されますが、XML エレメントの値はエレメント間で異なる句読点を使用していることがあります。
-
SQL*Plus に ctxsys ユーザとしてログインし、次のコマンドを実行して、XML 列を所有するユーザに権限を割り当てます。
GRANT EXECUTE ON ctx_ddl TO <mdUsername>;
<mdUsername> は、XML 列を所有するユーザです。ArcIMS メタデータ サービスの場合、<mdUsername> は、サービスの ArcXML 構成ファイルに指定されているユーザです。
-
CTX_PARAMETERS ビューに対してクエリを実行し、Oracle のインストールに対する現在のデフォルト設定を確認します。
SELECT * FROM ctx_parameters;
-
CTX_PREFERENCES ビューに対してクエリを実行し、使用可能な設定を確認します。たとえば、CTXSYS.DEFAULT_LEXER 設定によって使用されているレクサーについてもこの方法で確認することができます。他のユーザが作成したカスタム設定も記載されています。
SELECT * FROM ctx_preferences;
-
CTX_PREFERENCE_VALUES ビューに対してクエリを実行し、XML ドキュメントの言語にシステム定義が正しく設定されていることを確認してください。
SELECT * FROM ctx_preference_values;
- 上記のクエリの結果を、使用しているバージョンのデータベースの『Oracle Text リファレンス』に記載されているレクサー、ワードリスト、その他のテキスト オブジェクトの許容設定と比較します。
- 現在のデフォルト設定が XML ドキュメントの言語に適切ではなく、既存のカスタム テキスト設定も使用できない場合は、XML ドキュメントのインデックス構築および検索を正しく実行するためのカスタム テキスト設定を作成します。
- XML 列を作成する前に、このカスタム テキスト設定を DBTUNE の XML_IDX_INDEX_TEXT パラメータに追加します。
-
カスタム設定を作成する前に、システム標準のテキスト オブジェクトを調べて、使用したいレクサーが現在の Oracle インストール環境で使用できるかどうかを確認します。
SELECT * FROM ctx_objects;
-
前のステップで返されたレクサーを参照するカスタム テキスト設定を作成することができます。
たとえば、ctx_objects のリストに WORLD_LEXER が返された場合は、このレクサーを参照するカスタム テキスト設定を次のようにして作成することができます。
EXEC ctx_ddl.create_preference('WORLDLEXER', 'WORLD_LEXER');
-
この設定を使用するように XML_IDX_INDEX_TEXT DBTUNE パラメータを設定します。ジオデータベースをまだ作成していない場合は、dbtune.sde ファイルを変更して、希望する設定を含めることができます。詳細については、「ジオデータベースを作成する前に dbtune ファイルを変更」をご参照ください。ジオデータベースがすでに存在する場合は、sdedbtune コマンドを使用して、DEFAULTS キーワードの XML_IDX_INDEX_TEXT パラメータを変更することができます。詳細については、「DBTUNE テーブル作成後の内容の変更」をご参照ください。
設定名の先頭には、必ず設定を作成したユーザの名前を付けるようにします。たとえば、ジオデータベース管理者が、設定の作成時にユーザ「sde」としてログインしていた場合は、XML_IDX_INDEX_TEXT パラメータを次のように設定する必要があります。
LEXER sde.WORLDLEXER
-
ワードリストとストップリストが、使用する言語に対して適切に設定されていることを確認します。設定が適切ではない場合は、次のいずれかの手順を実行してください。
- 『Oracle Text リファレンス』の定義に従って、使用する言語の設定に適した値の 1 つを使用します。
- 必要な設定が『Oracle Text リファレンス』に定義されていない場合は、カスタム設定を作成し、DBTUNE テーブルの XML_IDX_INDEX_TEXT パラメータの値に追加します。
現在のデフォルト設定が XML ドキュメントの言語に対して適切ではなく、既存のカスタム テキスト設定も使用できない場合は、XML 列を作成する前に、XML ドキュメントを正しくインデックス構築して検索するカスタム テキスト設定を作成し、ArcSDE の DBTUNE パラメータ XML_IDX_INDEX_TEXT を使用してこのカスタム設定を参照する必要があります。