ヘッダーをスキップ
Oracle® Textアプリケーション開発者ガイド
12cリリース1 (12.1)
B71317-04
  目次へ移動
目次
索引へ移動
索引

前
次
 

MDATAセクション

MDATAセクションは、ドキュメントに対するユーザー定義済メタデータの参照で使用されます。MDATAセクションを使用すると、複合問合せを高速化できます。問合せで戻すことができるMDATAセクションの数に制限はありません。

テキストの内容およびドキュメント・タイプ(雑誌、新聞、小説など)の両方に応じた問合せをする場合を考えます。テキストの列およびドキュメント・タイプの列を使用して索引を作成し、次にこの形式の複合問合せを実行します。この場合は、Adam Thorpe(小説Ulvertonの作者)というフレーズを含むすべての小説を検索します。

SELECT id FROM documents
   WHERE doctype = 'novel'
      AND CONTAINS(text, 'Adam Thorpe')>0;

ただし、通常は、別々の列を使用するよりも、属性(この場合はドキュメント・タイプ)を1つのフィールド・セクションに組み込ませた方が速いです。次に、1つのCONTAINS問合せを使用します。

SELECT id FROM documents
  WHERE CONTAINS(text, 'Adam Thorpe AND novel WITHIN doctype')>0;

この方法には、2つの短所があります。

そのため、フィールド・セクションではなくMDATAセクションを使用した方が有効です。MDATAセクションは、フィールド・セクションのように索引付けされますが、メタデータ値が追加され、ドキュメント・テキストを再索引付けせずにドキュメントから削除できます。フィールド・セクションとは異なり、MDATA値はトークン化されません。また、MDATAセクションの索引付けは、通常、フィールド・セクションの索引付けよりも使用するディスク・スペースが小さくてすみます。

MDATAセクションをセクション・グループに追加するには、CTX_DDL.ADD_MDATA_SECTIONを使用します。この例では、AUTHORというMDATAセクションを追加し、これに「Soseki Natsume」(小説「Kokoro」の作者)という値を指定します。

ctx_ddl.create.section.group('htmgroup', 'HTML_SECTION_GROUP');
ctx_ddl.add_mdata_section('htmgroup', 'author', 'Soseki Natsume');

MDATA値は、CTX_DDL.ADD_MDATAを使用して変更したり、CTX_DDL.REMOVE_MDATAを使用して削除できます。また、MDATAセクションには複数の値を含めることができます。索引の所有者のみがCTX_DDL.ADD_MDATAおよびCTX_DDL.REMOVE_MDATAをコールできます。

CTX_DDL.ADD_MDATAおよびCTX_DDL.REMOVE_MDATAは、両方ともCTXCAT索引およびCTXRULE索引に対してサポートされていません。

MDATA値はレクサーを介して渡されません。かわりに、すべての値が次のように簡易正規化されます。

ドキュメントにMDATAメタデータが追加された後、MDATA CONTAINS問合せ演算子を使用して、メタデータを問い合せることができます。

SELECT id FROM documents
   WHERE CONTAINS(text, 'Tokyo and MDATA(author, Soseki Natsume)')>0;

AUTHORタグに正確な値「Soseki Natsume」がある場合(単純なトークン化後)のみ、この問合せは正常に行われます。「Soseki」または「Natsume Soseki」では機能しません。

MDATAに関して、他に注意する点は次のとおりです。

関連項目:

  • MDATA演算子の詳細は、『Oracle Textリファレンス』の「Oracle Text CONTAINS問合せ演算子」を参照してください。

  • MDATAセクションの追加および削除の詳細は、『Oracle Textリファレンス』の「CTX_DDLパッケージ」を参照してください。