ヘッダーをスキップ
Oracle Textリファレンス
10gリリース2(10.2)
部品番号: B19214-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

8 CTX_DOCパッケージ

この章では、抽出したテキストのハイライトまたはドキュメントのテーマ・リストの生成などの、ドキュメント・サービスを要求するためのPL/SQLパッケージCTX_DOCについて説明します。

これらのプロシージャの多くには2種類があります。索引を使用するプロシージャと、索引を使用しないプロシージャです。索引を使用しないものは、ポリシーベースのプロシージャと呼ばれます。これらは、CONTEXT索引を事前作成せずに単一のドキュメント上でドキュメント・サービスを使用する場合に対処するため、提供されています。ポリシーベースのプロシージャを使用することで、このような処理を実行できます。

policy_*プロシージャは従来のメモリー内ドキュメント・サービスをミラー化し、index_nameをポリシー名、textkeyをドキュメントのデータ型であるVARCHAR2CLOBBLOBまたはBFILEに置き換えて使用されます。このため、これらのプロシージャを使用してドキュメント・サービス出力を取得するために索引を作成する必要はありません。

文字オフセットおよび長さを生成するプロシージャ(HIGHLIGHT、TOKENSなど)について、Oracle TextはUSC-2コードポイント・セマンティクスに準拠します。

CTX_DOCパッケージには、次のプロシージャおよびファンクションが含まれています。

名前 説明
FILTER
プレーン・テキストまたはHTML形式のドキュメントを生成します。
GIST
ドキュメントの要点またはテーマ・サマリーを生成します。
HIGHLIGHT
プレーン・テキストまたはHTML形式のドキュメントのハイライト表示するオフセット情報を生成します。
IFILTER
プレーン・テキスト形式のバイナリ・データを生成します。USER_DATASTOREプロシージャからコールできます。
MARKUP
プレーン・テキストまたはHTML形式のドキュメントを、問合せ語句をハイライト表示して生成します。
PKENCODE
他のCTX_DOCプロシージャで使用するコンポジット・テキストキー文字列(値)をコード化します。
POLICY_FILTER
プレーン・テキストまたはHTML形式のドキュメントを、索引なしで生成します。
POLICY_GIST
ドキュメントの要点またはテーマ・サマリーを、索引なしで生成します。
POLICY_HIGHLIGHT
プレーン・テキストまたはHTML形式のドキュメントをハイライト表示するオフセット情報を、索引なしで生成します。
POLICY_MARKUP
プレーン・テキストまたはHTML形式のドキュメントを、索引なしで問合せ語句をハイライト表示して生成します。
POLICY_SNIPPET
ドキュメントの用語索引を、問合せ語句に基づいて索引なしで生成します。
POLICY_THEMES
ドキュメントのテーマのリストを、索引なしで生成します。
POLICY_TOKENS
ドキュメントのすべての索引トークンを、索引なしで生成します。
SET_KEY_TYPE
CTX_DOCプロシージャを設定し、ROWIDまたは主キーのドキュメント識別子を受け取ります。
SNIPPET
ドキュメントの用語索引を、問合せ語句に基づいて索引なしで生成します。
THEMES
ドキュメントのテーマのリストを生成します。
TOKENS
ドキュメントのすべての索引トークンを生成します。


FILTER

CTX_DOC.FILTERプロシージャを使用して、プレーン・テキストまたはHTML形式のいずれかのドキュメントを生成します。表示されたドキュメントは、結果表またはメモリーのいずれかに格納できます。このプロシージャは、通常、問合せの後でフィルタ処理するドキュメントを決定してから使用します。


注意:

生成されたHTML形式のドキュメントには、図形は含まれていません。

構文1: メモリー内の結果記憶域

 CTX_DOC.FILTER(
          index_name  IN VARCHAR2,
          textkey     IN VARCHAR2,
          restab      IN OUT NOCOPY CLOB,
          plaintext   IN BOOLEAN  DEFAULT FALSE);

構文2: 結果表記憶域

 CTX_DOC.FILTER(
          index_name  IN VARCHAR2,
          textkey     IN VARCHAR2,
          restab      IN VARCHAR2,
          query_id    IN NUMBER DEFAULT 0,
          plaintext   IN BOOLEAN  DEFAULT FALSE);

index_name

textkeyで識別されるドキュメントを含むテキスト列に関連する索引の名前を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

restab

このプロシージャで、マークアップされたテキストを表またはメモリー内CLOBのどちらに格納するかを指定できます。

結果を表に格納するには、表の名前を指定します。このコールを行う前に、結果表が存在している必要があります。


関連項目

フィルタ結果表の構造の詳細は、付録A「Oracle Text結果表」「フィルタ表」を参照してください。

結果をメモリーに格納するには、CLOBロケータの名前を指定します。restabNULLの場合は、一時CLOBが割り当てられて戻ります。使用後は、DBMS_LOB.FREETEMPORARY()でロケータの割当てを解除する必要があります。

restabNULLでない場合は、操作の前にCLOBが切り捨てられます。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

query_idが指定されていないか、またはNULLに設定されている場合、デフォルトは0(ゼロ)です。restabに指定されている表を手動で切り捨てる必要があります。

plaintext

プレーン・テキスト形式のドキュメントを生成するには、TRUEを指定します。AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、HTML形式のドキュメントを生成するために、FALSEを指定します。

メモリー内フィルタ

次のコードは、ドキュメントをメモリー内のHTMLにフィルタ処理する方法を示しています。

declare
mklob clob;
amt number := 40;
line varchar2(80);

begin
 ctx_doc.filter('myindex','1', mklob, FALSE);
 -- mklob is NULL when passed-in, so ctx-doc.filter will allocate a temporary
 -- CLOB for us and place the results there.
 dbms_lob.read(mklob, amt, 1, line);
 dbms_output.put_line('FIRST 40 CHARS ARE:'||line);
 -- have to de-allocate the temp lob
 dbms_lob.freetemporary(mklob);
 end;

フィルタ処理されたドキュメントを格納するために、次のようにフィルタ結果表を作成します。

create table filtertab (query_id number,
                        document  clob);

テキストキー20でプレーン・テキスト形式のドキュメントを取得するには、次の文を発行します。

begin
ctx_doc.filter('newsindex', '20', 'filtertab', '0', TRUE);
end;

GIST

CTX_DOC.GISTプロシージャを使用して、ドキュメントの要点およびテーマ・サマリーを生成します。段落レベルまたは文レベルの要点またはテーマ・サマリーを生成できます。


注意:

CTX_DOC.GISTを使用するには、ナレッジ・ベースがインストールされている必要があります。ナレッジ・ベースは、Oracle Textとともにインストールされていない場合があります。ナレッジ・ベースの詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

構文1: メモリー内記憶域

CTX_DOC.GIST(
index_name IN VARCHAR2,
textkey       IN VARCHAR2,
restab        IN OUT CLOB,
glevel        IN VARCHAR2 DEFAULT 'P',
pov           IN VARCHAR2 DEFAULT 'GENERIC',
numParagraphs IN NUMBER DEFAULT 16,
maxPercent    IN NUMBER DEFAULT 10,
num_themes   IN NUMBER DEFAULT 50);

構文2: 結果表記憶域

CTX_DOC.GIST(
index_name IN VARCHAR2,
textkey       IN VARCHAR2,
restab        IN VARCHAR2,
query_id      IN NUMBER DEFAULT 0,
glevel        IN VARCHAR2 DEFAULT 'P',
pov           IN VARCHAR2 DEFAULT NULL,
numParagraphs IN NUMBER DEFAULT 16,
maxPercent    IN NUMBER DEFAULT 10,
num_themes     IN NUMBER DEFAULT 50);
index_name

textkeyで識別されるドキュメントを含むテキスト列に関連する索引の名前を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

restab

このプロシージャで、要点およびテーマ・サマリーを表またはメモリー内CLOBのどちらに格納するかを指定できます。

結果を表に格納するには、表の名前を指定します。


関連項目

要点結果表の構造の詳細は、付録A「Oracle Text結果表」「要点表」を参照してください。

結果をメモリーに格納するには、CLOBロケータの名前を指定します。restabNULLの場合は、一時CLOBが割り当てられて戻ります。使用後は、ロケータの割当てを解除する必要があります。

restabNULLでない場合は、操作の前にCLOBが切り捨てられます。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

glevel

生成する要点またはテーマ・サマリーのタイプを指定します。有効な値は、次のとおりです。

デフォルトはPです。

pov

要点または単一のテーマ・サマリーを生成するかどうかを指定します。生成される要点またはテーマ・サマリーのタイプ(文レベルまたは段落レベル)は、glevelに指定した値によって決まります。

ドキュメント全体の要点を生成するには、povに値GENERICを指定します。ドキュメントの単一のテーマに対するテーマ・サマリーを生成するには、そのテーマをpovの値として指定します。

結果表記憶域を使用し、povの値を指定しない場合、このプロシージャはドキュメントに対して、全体の要点に加えて最大50個までのテーマ・サマリーを戻します。

メモリー内の結果記憶域をCLOBに対して使用する場合は、povを指定する必要があります。ただし、povを指定しない場合、このプロシージャはドキュメントの全体の要点のみを生成します。


注意:

povパラメータでは、大/小文字が区別されます。ドキュメントの要点を戻すには、すべて大文字で「GENERIC」を指定します。テーマ・サマリーを戻すには、ドキュメントに対して生成されたとおりのテーマを正確に指定します。

ドキュメントに対してTHEMESで生成されたテーマのみを、povの入力として使用できます。


numParagraphs

ドキュメントの要点またはテーマ・サマリーに対して選択されたドキュメントの段落(または文)の最大数を指定します。デフォルトは16です。


注意:

numParagraphsパラメータが使用されるのは、このパラメータによって生成される要点またはテーマ・サマリーのサイズが、maxPercentパラメータによって生成される要点またはテーマ・サマリーのサイズよりも小さいときのみです。

つまり、システムは、常に最小サイズの要点またはテーマ・サマリーを戻します。


maxPercent

ドキュメントの要点またはテーマ・サマリーに対して選択されたドキュメントの段落(または文)の最大数を、ドキュメントの合計段落数(または合計文数)に対する割合で指定します。デフォルトは10です。


注意:

maxPercentパラメータが使用されるのは、このパラメータによって生成される要点またはテーマ・サマリーのサイズが、numParagraphsパラメータによって生成される要点またはテーマ・サマリーのサイズよりも小さいときのみです。

つまり、システムは、常に最小サイズの要点またはテーマ・サマリーを戻します。


num_themes

povの値を指定しない場合は、生成するテーマ・サマリーの数を指定します。たとえば、10を指定すると、トップ10のテーマ・サマリーが戻ります。デフォルトは50です。

0(ゼロ)またはNULLを指定すると、ドキュメント内の全テーマが戻ります。51以上のテーマがドキュメントに格納されている場合、概念階層が表示されるのは、トップ50のテーマのみです。

メモリー内要点

次の例では、10個以内の段落のデフォルト・サイズでない全体の要点表を生成します。結果はCLOBロケータの中のメモリーに格納されます。使用後、コードは戻されたCLOBロケータの割当てを解除します。

set serveroutput on;
declare
  gklob clob;
  amt number := 40;
  line varchar2(80);

begin
 ctx_doc.gist('newsindex','34',gklob, pov => 'GENERIC',numParagraphs => 10);
  -- gklob is NULL when passed-in, so ctx-doc.gist will allocate a temporary
  -- CLOB for us and place the results there.

  dbms_lob.read(gklob, amt, 1, line);
  dbms_output.put_line('FIRST 40 CHARS ARE:'||line);
  -- have to de-allocate the temp lob
  dbms_lob.freetemporary(gklob);
 end;

結果表の要点

次の例では、要点表CTX_GISTを作成します。

create table CTX_GIST (query_id number,
                       pov       varchar2(80),
                       gist      CLOB);

要点およびテーマ・サマリー

次の例では、ドキュメント34に対するデフォルト・サイズの段落レベルの要点とドキュメント内の全テーマに対するトップ10のテーマ・サマリーを戻します。

begin
   ctx_doc.gist('newsindex','34','CTX_GIST', 1, num_themes=>10);
end;

次の例では、10個以内の段落のデフォルト・サイズでない要点表を生成します。

begin
  ctx_doc.gist('newsindex','34','CTX_GIST',1,pov =>'GENERIC',numParagraphs=>10);
end;

次の例では、段落数がドキュメントの合計段落数の10パーセント以下である要点表を生成します。

begin
  ctx_doc.gist('newsindex','34','CTX_GIST',1,pov => 'GENERIC',  maxPercent => 10);
end;

テーマ・サマリー

次の例では、ドキュメント34のinsectsに対する段落レベルのテーマ・サマリーを戻します。デフォルト・サイズのテーマ・サマリーが戻されます。

begin
   ctx_doc.gist('newsindex','34','CTX_GIST',1, pov => 'insects');
end;

HIGHLIGHT

CTX_DOC.HIGHLIGHTプロシージャを使用して、ドキュメントのハイライト・オフセットを生成します。オフセット情報は、指定する問合せを満たすドキュメント内の語句に対して生成されます。これらのハイライト表示される語句は、ワード問合せを満たすワードまたはABOUT問合せを満たすテーマのいずれかです。

プレーン・テキスト形式またはHTML形式のいずれかのドキュメントに対して、ハイライト・オフセットを生成できます。CTX_DOC.HIGHLIGHTが戻す表には、元のドキュメントに存在した図形は含まれていません。オフセット情報は、CTX_DOC.FILTERでフィルタ処理された同じドキュメントに適用できます。

このプロシージャは、通常、問合せの後で処理するドキュメントを決めてから使用します。

ハイライト・オフセットは、メモリー内PL/SQL表または結果表のいずれかに格納できます。

索引が不要なこのプロシージャの形式は、CTX_DOC.POLICY_HIGHLIGHTを参照してください。

構文1: メモリー内の結果記憶域

CTX_DOC.HIGHLIGHT(
        index_name  IN VARCHAR2,
        textkey     IN VARCHAR2,
        text_query  IN VARCHAR2,
        restab      IN OUT NOCOPY HIGHLIGHT_TAB,
        plaintext   IN BOOLEAN  DEFAULT FALSE);

構文2: 結果表記憶域

CTX_DOC.HIGHLIGHT(
          index_name  IN VARCHAR2,
          textkey     IN VARCHAR2,
          text_query  IN VARCHAR2,
          restab      IN VARCHAR2,
          query_id    IN NUMBER   DEFAULT 0,
          plaintext   IN BOOLEAN  DEFAULT FALSE);
index_name

textkeyで識別されるドキュメントを含むテキスト列に関連する索引の名前を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。NULLの場合、ハイライトは生成されません。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、HIGHLIGHTはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。HIGHLIGHTプロシージャは、常に結果セット全体に対するハイライト情報を戻します。

restab

このプロシージャが、ハイライト・オフセットを表またはメモリー内PL/SQL表のいずれかに格納することを指定できます。

結果を表に格納するには、表の名前を指定します。このプロシージャのコール前に、表が存在している必要があります。


関連項目

ハイライト結果表の構造の詳細は、付録A「Oracle Text結果表」「ハイライト表」を参照してください。

結果をメモリー内表に格納するには、CTX_DOC.HIGHLIGHT_TAB型のメモリー内表の名前を指定します。HIGHLIGHT_TABデータ型は、次のように定義されます。

type highlight_rec is record (
  offset number,
  length number
);
type highlight_tab is table of highlight_rec index by binary_integer;

CTX_DOC.HIGHLIGHTは、操作の前にHIGHLIGHT_TABを消去します。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

query_idが指定されていないか、またはNULLに設定されている場合、デフォルトは0(ゼロ)です。restabに指定されている表を手動で切り捨てる必要があります。

plaintext

プレーン・テキスト・オフセットのドキュメントを生成するには、TRUEを指定します。

AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、ドキュメントのHTMLオフセットを生成するために、FALSEを指定します。

ハイライト表の作成

ハイライト・オフセット情報を格納するために、ハイライト表を作成します。

create table hightab(query_id number,
                     offset number,
                     length number);

ワード・ハイライト・オフセット

ドキュメント20のdogという語句に対するHTMLハイライト・オフセット情報を取得するには、次の問合せを発行します。

begin
ctx_doc.highlight('newsindex', '20', 'dog', 'hightab', 0, FALSE);
end;

テーマ・ハイライト・オフセット

索引newsindexにテーマ・コンポーネントがある場合、次の問合せを発行することによって、politicsというテーマ問合せに対するHTMLハイライト・オフセット情報を取得します。

begin
ctx_doc.highlight('newsindex', '20', 'about(politics)', 'hightab', 0, FALSE);
end;

この文に対する出力は、ドキュメントのpoliticsのテーマを表すハイライト表示されたワードおよび句に対するオフセットです。

注意

CTX_DOC.HIGHLIGHTでは、問合せテンプレートの使用はサポートされていません。

関連項目


IFILTER

バイナリ・データをテキストにフィルタ処理するには、このプロシージャを使用します。

このプロシージャは、バイナリ・データ(BLOB IN)を取り出し、そのデータをAUTO_FILTERフィルタでフィルタ処理し、そのテキスト形式データをCLOBに書き込みます。(元のドキュメント内の図形はすべて無視されます。)CTX_DOC.IFILTERではセーフ・コールアウトを使用しており、索引の使用は不要です。CTX_DOC.FILTERの場合は、索引が必要となります。


注意:

このプロシージャは、将来のリリースではサポートされません。かわりに、CTX_DOC.POLICY_FILTERをプログラムで使用する必要があります。

要件

CTX_DOC.IFILTERでは、セーフ・コールアウト・メカニズムを採用しているため、extprocエージェントの起動には、SQL*Netリスナーの実行と構成が必要です。

構文

CTX_DOC.IFILTER(data IN BLOB, text IN OUT NOCOPY CLOB);
data

フィルタ処理するバイナリ・データを指定します。

text

宛先のCLOBを指定します。CLOBには、フィルタ処理済のデータが置かれます。このパラメータは、書込み可能な有効なCLOBロケータであることが必要です。NULLまたは書込み禁止のCLOBを渡すと、エラーになります。フィルタ処理済のテキストは、既存のデータがある場合、その末尾に追加されます。

MATCHES問合せでは、VARCHAR2またはCLOBのドキュメント・テキストを使用できます。BLOB入力は使用できないため、フィルタ処理済のドキュメントに直接一致させることはできません。かわりに、AUTO_FILTERフィルタを使用してバイナリ・コンテンツをCLOBにフィルタ処理する必要があります。次の例は、ドキュメント・データがバインド変数:doc_blob内にあることを前提としています。

 declare
    doc_text clob;
  begin
    -- create a temporary CLOB to hold the document text
    doc_text := dbms_lob.createtemporary(doc_text, TRUE, DBMS_LOB.SESSION);

    -- call ctx_doc.ifilter to filter the BLOB to CLOB data
    ctx_doc.ifilter(:doc_blob, doc_text);

    -- now do the matches query using the CLOB version
    for c1 in (select * from queries where matches(query_string, doc_text)>0)
    loop
      -- do what you need to do here
    end loop;

    dbms_lob.freetemporary(doc_text);
  end;


MARKUP

CTX_DOC.MARKUPプロシージャは、問合せ指定およびドキュメントのテキストキーを取り出し、問合せ語句がマークアップされた形式のドキュメントを戻します。これらのマークアップされた語句は、ワード問合せを満たすワードまたはABOUT問合せを満たすテーマのいずれかです。

マークアップされた出力は、プレーン・テキストまたはHTMLのいずれかに設定できます。CTX_DOC.MARKUPが戻すマークアップ・ドキュメントには、元のドキュメントに存在した図形は含まれていません。

ハイライト表示された語句をマークするために、事前定義済のタグセットの1つ(HTMLナビゲーションを可能にするタグ順序を含む)を使用できます。

CTX_DOC.MARKUPは、通常、問合せの後で処理するドキュメントを決めてから使用します。

マークアップされたドキュメントは、メモリーまたは結果表のいずれかに格納できます。

索引が不要なこのプロシージャの形式は、CTX_DOC.POLICY_MARKUPを参照してください。


注意:

Oracle TextによってCTX.DOC.MARKUPから戻される出力は、常に整形式であるとはかぎりません。特に、すでにHTMLまたはXMLを使用してマークアップされている語句については保証できません。マークアップ・タグに予期しないネストが存在する場合に、整形式の出力が得られないことがあります。

構文1: メモリー内の結果記憶域

CTX_DOC.MARKUP(
index_name IN VARCHAR2,
textkey        IN VARCHAR2,
text_query     IN VARCHAR2,
restab         IN OUT NOCOPY CLOB,
plaintext      IN BOOLEAN   DEFAULT FALSE,
tagset         IN VARCHAR2  DEFAULT 'TEXT_DEFAULT',
starttag       IN VARCHAR2  DEFAULT NULL,
endtag         IN VARCHAR2  DEFAULT NULL,
prevtag        IN VARCHAR2  DEFAULT NULL,
nexttag        IN VARCHAR2  DEFAULT NULL);

構文2: 結果表記憶域

CTX_DOC.MARKUP(
index_name IN VARCHAR2,
textkey        IN VARCHAR2,
text_query     IN VARCHAR2,
restab         IN VARCHAR2,
query_id       IN NUMBER    DEFAULT 0,
plaintext      IN BOOLEAN   DEFAULT FALSE,
tagset         IN VARCHAR2  DEFAULT 'TEXT_DEFAULT',
starttag       IN VARCHAR2  DEFAULT NULL,
endtag         IN VARCHAR2  DEFAULT NULL,
prevtag        IN VARCHAR2  DEFAULT NULL,
nexttag        IN VARCHAR2  DEFAULT NULL);
index_name

textkeyで識別されるドキュメントを含むテキスト列に関連する索引の名前を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、MARKUPはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。MARKUPプロシージャは、常に結果セット全体に対するハイライト情報を戻します。

restab

このプロシージャで、マークアップされたテキストを表またはメモリー内CLOBのどちらに格納するかを指定できます。

結果を表に格納するには、表の名前を指定します。このプロシージャのコール前に、結果表が存在している必要があります。


関連項目

マークアップ結果表の構造の詳細は、付録A「Oracle Text結果表」「マークアップ表」を参照してください。

結果をメモリーに格納するには、CLOBロケータの名前を指定します。restabNULLの場合は、一時CLOBが割り当てられて戻ります。使用後は、ロケータの割当てを解除する必要があります。

restabNULLでない場合は、操作の前にCLOBが切り捨てられます。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

query_idが指定されていないか、またはNULLに設定されている場合、デフォルトは0(ゼロ)です。restabに指定されている表を手動で切り捨てる必要があります。

plaintext

プレーン・テキストのマークアップ・ドキュメントを生成するには、TRUEを指定します。AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、マークアップされたHTML形式のドキュメントを生成するために、FALSEを指定します。

tagset

次の事前定義済のタグセットの1つを指定します。この表の2列目および3列目は、各タグセットに対して定義された4つの異なるタグを示します。

タグセット タグ タグ値
TEXT_DEFAULT starttag <<<

endtag >>>

prevtag

nexttag
HTML_DEFAULT starttag <B>

endtag </B>

prevtag

nexttag
HTML_NAVIGATE starttag <A NAME=ctx%CURNUM><B>

endtag </B></A>

prevtag <A HREF=#ctx%PREVNUM>&lt;</A>

nexttag <A HREF=#ctx%NEXTNUM>&gt;</A>

starttag

ハイライト表示された語句の開始を示すために、MARKUPによって挿入された文字を指定します。

ハイライト表示されたワードに対するstarttag、endtag、prevtagおよびnexttagの順序は、次のとおりです。

... prevtag starttag word endtag nexttag...
endtag

ハイライト表示された語句の終了を示すために、MARKUPによって挿入された文字を指定します。

prevtag

前のハイライト表示された部分にユーザーをナビゲートするタグを定義するマークアップ順序を指定します。

マークアップ順序prevtagおよびnexttagで、動的に設定される次のオフセット変数を指定できます。

オフセット変数
%CURNUM 現在のオフセット番号
%PREVNUM 前のオフセット番号
%NEXTNUM 次のオフセット番号

例については、HTML_NAVIGATEタグセットの記述を参照してください。

nexttag

次のハイライト表示された部分にユーザーをナビゲートするタグを定義するマークアップ順序を指定します。

マークアップ順序内で、prevtagに使用するものと同じオフセット変数を使用できます。例については、prevtagおよびHTML_NAVIGATEタグセットの記述を参照してください。

メモリー内マークアップ

次のコードは、ドキュメント(the dog chases the cat)を取り出し、割り当てられたマークアップを実行し、結果をメモリーに格納します。

set serveroutput on

drop table mark_tab;
create table mark_tab (id number primary key, text varchar2(80) );
insert into mark_tab values ('1', 'The dog chases the cat.');

create index mark_tab_idx on mark_tab(text)
        indextype is ctxsys.context parameters
        ('filter ctxsys.null_filter');

declare
mklob clob;
amt number := 40;
line varchar2(80);

begin
 ctx_doc.markup('mark_tab_idx','1','dog AND cat', mklob);
 -- mklob is NULL when passed-in, so ctx_doc.markup will
 -- allocate a temporary CLOB for us and place the results there.
 dbms_lob.read(mklob, amt, 1, line);
 dbms_output.put_line('FIRST 40 CHARS ARE:'||line);
 -- have to de-allocate the temp lob
 dbms_lob.freetemporary(mklob);
 end;
/

この例の出力には、マークアップ・ドキュメントの外観が示されます。

FIRST 40 CHARS ARE: The <<<dog>>> chases the <<<cat>>>.

マークアップ表

マークアップされたドキュメントを格納するために、次のようにハイライト・マークアップ表を作成します。

create table markuptab (query_id number,
                        document  clob);

HTMLのワード・ハイライト

MARKUPの結果を表に格納することもできます。ドキュメント23のdogまたはcatというワードに対するHTMLハイライト・マークアップを作成するには、次の文を発行します。

begin
  ctx_doc.markup(index_name => 'my_index',
                      textkey => '23',
                      text_query => 'dog|cat',
                      restab => 'markuptab',
                      query_id => '1',
                      tagset => 'HTML_DEFAULT');
end;

HTMLのテーマ・ハイライト

ドキュメント23のpoliticsというテーマに対するHTMLハイライト・マークアップを作成するには、次の文を発行します。

begin
  ctx_doc.markup(index_name => 'my_index',
                      textkey => '23',
                      text_query => 'about(politics)',
                      restab => 'markuptab',
                      query_id => '1',
                      tagset => 'HTML_DEFAULT');
end;

関連項目


PKENCODE

CTX_DOC.PKENCODEファンクションは、コンポジット・テキストキーのリストを1つの文字列に変換し、文字列を戻します。

PKENCODEによって作成された文字列は、CTX_DOC.THEMESおよびCTX_DOC.GISTなどの他のCTX_DOCプロシージャで、主キー・パラメータtextkeyとして使用できます。

構文

CTX_DOC.PKENCODE(
         pk1    IN VARCHAR2,
         pk2    IN VARCHAR2 DEFAULT NULL,
         pk4    IN VARCHAR2 DEFAULT NULL,
         pk5    IN VARCHAR2 DEFAULT NULL,
         pk6    IN VARCHAR2 DEFAULT NULL,
         pk7    IN VARCHAR2 DEFAULT NULL,
         pk8    IN VARCHAR2 DEFAULT NULL,
         pk9    IN VARCHAR2 DEFAULT NULL,
         pk10   IN VARCHAR2 DEFAULT NULL,
         pk11   IN VARCHAR2 DEFAULT NULL,
         pk12   IN VARCHAR2 DEFAULT NULL,
         pk13   IN VARCHAR2 DEFAULT NULL,
         pk14   IN VARCHAR2 DEFAULT NULL,
         pk15   IN VARCHAR2 DEFAULT NULL,
         pk16   IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;

pk1-pk16

各PK引数はコンポジット・テキストキー・リストの列要素を指定します。最大16列の要素をコード化できます。

戻り値

コンポジット・テキストキーのコード化された値を表す文字列です。

begin
ctx_doc.gist('newsindex',CTX_DOC.PKENCODE('smith', 14), 'CTX_GIST');
end;

この例のsmithおよび14は、ドキュメントのコンポジット・テキストキーの値を構成します。


POLICY_FILTER

プレーン・テキストまたはHTML形式のドキュメントを生成します。このプロシージャでは、CONTEXT索引は不要です。

このプロシージャでは、信頼できるコールアウトを使用しています。

構文

ctx_doc.policy_filter(policy_name in VARCHAR2,
                      document       in [VARCHAR2|CLOB|BLOB|BFILE],
                      restab         in out nocopy CLOB,
                      plaintext      in BOOLEAN default FALSE,
                      language       in VARCHAR2 default NULL,
                      format         in VARCHAR2 default NULL,
                      charset        in VARCHAR2 default NULL);
policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

フィルタ処理するドキュメントを指定します。

restab

CLOBロケータの名前を指定します。

plaintext

プレーン・テキスト形式のドキュメントを生成するには、TRUEを指定します。AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、HTML形式のドキュメントを生成するために、FALSEを指定します。

language

ドキュメントの言語を指定します。 元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。 第2章「Oracle Text索引付けの要素」「BASIC_LEXER」を参照してください。

format

ドキュメントの形式を指定します。 元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。 詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。 元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。 第2章「Oracle Text索引付けの要素」「複合キャラクタ・セット列の索引付け」を参照してください。


POLICY_GIST

ドキュメントの要点またはテーマ・サマリーを生成します。段落レベルまたは文レベルの要点またはテーマ・サマリーを生成できます。このプロシージャでは、CONTEXT索引は不要です。


注意:

CTX_DOC.POLICY_GISTを使用するには、ナレッジ・ベースがインストールされている必要があります。ナレッジ・ベースは、Oracle Textとともにインストールされていない場合があります。ナレッジ・ベースの詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

構文

ctx_doc.policy_gist(policy_name in VARCHAR2,
                    document         in [VARCHAR2|CLOB|BLOB|BFILE],
                    restab           in out nocopy CLOB,
                    glevel           in VARCHAR2 default 'P',
                    pov              in VARCHAR2 default 'GENERIC',
                    numParagraphs    in VARCHAR2 default NULL,
                    maxPercent       in NUMBER default NULL,
                    num_themes       in NUMBER default 50
                    language         in VARCHAR2 default NULL,
                    format           in VARCHAR2 default NULL,
                    charset          in VARCHAR2 default NULL
);
policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

要点またはテーマ・サマリーを生成するドキュメントを指定します。

restab

CLOBロケータの名前を指定します。

glevel

生成する要点またはテーマ・サマリーのタイプを指定します。有効な値は、次のとおりです。

デフォルトはPです。

pov

要点または単一のテーマ・サマリーを生成するかどうかを指定します。生成される要点またはテーマ・サマリーのタイプ(文レベルまたは段落レベル)は、glevelに指定した値によって決まります。

ドキュメント全体の要点を生成するには、povに値GENERICを指定します。ドキュメントの単一のテーマに対するテーマ・サマリーを生成するには、そのテーマをpovの値として指定します。

結果表記憶域を使用し、povの値を指定しない場合、このプロシージャはドキュメントに対して、全体の要点に加えて最大50個までのテーマ・サマリーを戻します。


注意:

povパラメータでは、大/小文字が区別されます。ドキュメントの要点を戻すには、すべて大文字で「GENERIC」を指定します。テーマ・サマリーを戻すには、ドキュメントに対して生成されたとおりのテーマを正確に指定します。

ドキュメントに対してTHEMESで生成されたテーマのみを、povの入力として使用できます。


numParagraphs

ドキュメントの要点またはテーマ・サマリーに対して選択されたドキュメントの段落(または文)の最大数を指定します。デフォルトは16です。


注意:

numParagraphsパラメータが使用されるのは、このパラメータによって生成される要点またはテーマ・サマリーのサイズが、maxPercentパラメータによって生成される要点またはテーマ・サマリーのサイズよりも小さいときのみです。

つまり、システムは、常に最小サイズの要点またはテーマ・サマリーを戻します。


maxPercent

ドキュメントの要点またはテーマ・サマリーに対して選択されたドキュメントの段落(または文)の最大数を、ドキュメントの合計段落数(または合計文数)に対する割合で指定します。デフォルトは10です。


注意:

maxPercentパラメータが使用されるのは、このパラメータによって生成される要点またはテーマ・サマリーのサイズが、numParagraphsパラメータによって生成される要点またはテーマ・サマリーのサイズよりも小さいときのみです。

つまり、システムは、常に最小サイズの要点またはテーマ・サマリーを戻します。


num_themes

povの値を指定しない場合は、生成するテーマ・サマリーの数を指定します。たとえば、10を指定すると、トップ10のテーマ・サマリーが戻ります。デフォルトは50です。

0(ゼロ)またはNULLを指定すると、ドキュメント内の全テーマが戻ります。51以上のテーマがドキュメントに格納されている場合、概念階層が表示されるのは、トップ50のテーマのみです。

language

ドキュメントの言語を指定します。 元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。第2章「Oracle Text索引付けの要素」「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。 元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。 詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。 元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。 詳細は、第2章「Oracle Text索引付けの要素」「複合キャラクタ・セット列の索引付け」を参照してください。


POLICY_HIGHLIGHT

プレーン・テキストまたはHTML形式のドキュメントをハイライト表示するオフセット情報を生成します。このプロシージャでは、CONTEXT索引は不要です。

オフセット情報は、指定する問合せを満たすドキュメント内の語句に対して生成されます。これらのハイライト表示される語句は、ワード問合せを満たすワードまたはABOUT問合せを満たすテーマのいずれかです。

プレーン・テキスト形式またはHTML形式のいずれかのドキュメントに対して、ハイライト・オフセットを生成できます。オフセット情報は、CTX_DOC.FILTERでフィルタ処理された同じドキュメントに適用できます。

構文

ctx_doc.policy_highlight(policy_name in VARCHAR2,
                         document     in  [VARCHAR2|CLOB|BLOB|BFILE],
                         text_query   in VARCHAR2,
                         restab       in out nocopy highlight_tab,
                         plaintext    in boolean FALSE
                         language     in VARCHAR2 default NULL,
                         format       in VARCHAR2 default NULL,
                         charset      in VARCHAR2 default NULL
);
policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

ハイライト表示するオフセット情報を生成するドキュメントを指定します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。NULLの場合、ハイライトは生成されません。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、このプロシージャはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。このプロシージャは、常に結果セット全体に対するハイライト情報を戻します。

restab

highlight_tab PL/SQL索引付き表型の名前を指定します。


関連項目

highlight_tab表型の構造の詳細は、「HIGHLIGHT」を参照してください。

plaintext

プレーン・テキスト・オフセットのドキュメントを生成するには、TRUEを指定します。

AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、ドキュメントのHTMLオフセットを生成するために、FALSEを指定します。

language

ドキュメントの言語を指定します。 元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。第2章「Oracle Text索引付けの要素」「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。 元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。 詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。 元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。 詳細は、第2章「Oracle Text索引付けの要素」「複合キャラクタ・セット列の索引付け」を参照してください。


POLICY_MARKUP

プレーン・テキストまたはHTML形式のドキュメントを、問合せ語句をハイライト表示して生成します。このプロシージャでは、CONTEXT索引は不要です。

CTX_DOC.POLICY_MARKUPプロシージャは、問合せ指定およびドキュメントを取り出し、問合せ語句がマークアップされた形式のドキュメントを戻します。これらのマークアップされた語句は、ワード問合せを満たすワードまたはABOUT問合せを満たすテーマのいずれかです。

マークアップされた出力は、プレーン・テキストまたはHTMLのいずれかに設定できます。

ハイライト表示された語句をマークするために、事前定義済のタグセットの1つ(HTMLナビゲーションを可能にするタグ順序を含む)を使用できます。

構文

ctx_doc.policy_markup(policy_name in VARCHAR2,
                      document        in [VARCHAR2|CLOB|BLOB|BFILE],
                      text_query      in VARCHAR2,
                      restab          in out nocopy CLOB,
                      plaintext       in BOOLEAN default FALSE,
                      tagset          in VARCHAR2 default 'TEXT_DEFAULT',
                      starttag        in VARCHAR2 default NULL,
                      endtag          in VARCHAR2 default NULL,
                      prevtag         in VARCHAR2 default NULL,
                      nexttag         in VARCHAR2 default NULL
                      language        in VARCHAR2 default NULL,
                      format          in VARCHAR2 default NULL,
                      charset         in VARCHAR2 default NULL
);
policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

ハイライト表示するオフセット情報を生成するドキュメントを指定します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。NULLの場合、ハイライトは生成されません。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、このプロシージャはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。このプロシージャは、常に結果セット全体に対するハイライト情報を戻します。

restab

CLOBロケータの名前を指定します。

plaintext

プレーン・テキストのマークアップ・ドキュメントを生成するには、TRUEを指定します。AUTO_FILTERフィルタを使用している場合またはHTMLドキュメントを索引付けしている場合は、マークアップされたHTML形式のドキュメントを生成するために、FALSEを指定します。

tagset

次の事前定義済のタグセットの1つを指定します。この表の2列目および3列目は、各タグセットに対して定義された4つの異なるタグを示します。

タグセット タグ タグ値
TEXT_DEFAULT starttag <<<

endtag >>>

prevtag

nexttag
HTML_DEFAULT starttag <B>

endtag </B>

prevtag

nexttag
HTML_NAVIGATE starttag <A NAME=ctx%CURNUM><B>

endtag </B></A>

prevtag <A HREF=#ctx%PREVNUM>&lt;</A>

nexttag <A HREF=#ctx%NEXTNUM>&gt;</A>

starttag

ハイライト表示された語句の開始を示すために、MARKUPによって挿入された文字を指定します。

ハイライト表示されたワードに対するstarttag、endtag、prevtagおよびnexttagの順序は、次のとおりです。

... prevtag starttag word endtag nexttag...
endtag

ハイライト表示された語句の終了を示すために、MARKUPによって挿入された文字を指定します。

prevtag

前のハイライト表示された部分にユーザーをナビゲートするタグを定義するマークアップ順序を指定します。

マークアップ順序prevtagおよびnexttagで、動的に設定される次のオフセット変数を指定できます。

オフセット変数
%CURNUM 現在のオフセット番号
%PREVNUM 前のオフセット番号
%NEXTNUM 次のオフセット番号

例については、HTML_NAVIGATEタグセットの記述を参照してください。

nexttag

次のハイライト表示された部分にユーザーをナビゲートするタグを定義するマークアップ順序を指定します。

マークアップ順序内で、prevtagに使用するものと同じオフセット変数を使用できます。例については、prevtagおよびHTML_NAVIGATEタグセットの記述を参照してください。

language

ドキュメントの言語を指定します。 元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。第2章「Oracle Text索引付けの要素」「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。 元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。 詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。 元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。 詳細は、第2章「Oracle Text索引付けの要素」「複合キャラクタ・セット列の索引付け」を参照してください。


POLICY_SNIPPET

コンテキスト内のマークアップ・キーワードを表示します。戻されたテキストに含まれるのは、ワード問合せを満たすワードまたはABOUT問合せを満たすテーマのいずれかです。このバージョンのCTX_DOC.SNIPPETプロシージャでは、索引は不要です。

構文

CTX_DOC.POLICY_SNIPPET(
policy_name IN VARCHAR2,
document                 IN [VARCHAR2|CLOB|BLOB|BFILE],
text_query               IN VARCHAR2,
language                 IN VARCHAR2 default NULL,
format                   IN VARCHAR2 default NULL,
charset                  IN VARCHAR2 default NULL,
starttag                 IN VARCHAR2 DEFAULT '<b>',
endtag                   IN VARCHAR2 DEFAULT '</b>',
entity_translation       IN BOOLEAN  DEFAULT TRUE,
separator                IN VARCHAR2 DEFAULT '<b>...</b>'
)
return varchar2;
policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

キーワード検索の対象となるドキュメントを指定します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。NULLの場合、ハイライトは生成されません。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、POLICY_SNIPPETはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。

language

ドキュメントの言語を指定します。 元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。第2章「Oracle Text索引付けの要素」「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。 元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。 詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。 元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。 詳細は、第2章「Oracle Text索引付けの要素」「複合キャラクタ・セット列の索引付け」を参照してください。

starttag

問合せキーワードのマークアップ用の開始タグを指定します。デフォルトは<b>です。

endtag

問合せキーワードのマークアップ用の終了タグを指定します。デフォルトは</b>です。

entity_translation

HTMLエンティティを変換させるかどうかを指定します。デフォルトはTRUEで、プロシージャによって出力される際、特殊エンティティ(<>&)が代替形式(&lt;&gt;&amp;)に変換されます。ただし、CTX_DOC.POLICY_SNIPPETによって生成されたマークアップ・タグ内の特殊文字は変換されません。

separator

戻される複数の異なるフラグメントを区切る文字列を指定します。デフォルトは<b>...</b>です。

注意

CTX_DOC.POLICY_SNIPPETでは、問合せテンプレートの使用はサポートされていません。

関連項目


関連項目

「SNIPPET」「HIGHLIGHT」、および「MARKUP」


POLICY_THEMES

ドキュメントのテーマのリストを生成します。このプロシージャでは、CONTEXT索引は不要です。


注意:

CTX_DOC.POLICY_THEMESを使用するには、ナレッジ・ベースがインストールされている必要があります。ナレッジ・ベースは、Oracle Textとともにインストールされていない場合があります。ナレッジ・ベースの詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

構文

ctx_doc.policy_themes(policy_name in VARCHAR2,
                              document       in [VARCHAR2|CLOB|BLOB|BFILE],
                      restab         in out nocopy theme_tab,
                      full_themes    in BOOLEAN default FALSE,
                      num_themes     in number    default 50
                      language       in VARCHAR2 default NULL,
                      format         in VARCHAR2 default NULL,
                      charset        in VARCHAR2 default NULL
);
policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーを指定します。

document

テーマのリストを生成するドキュメントを指定します。

restab

theme_tab PL/SQL索引付き表型の名前を指定します。


関連項目

theme_tab型の構造の詳細は、「THEMES」を参照してください。

full_themes

このプロシージャが、各ドキュメント・テーマに対して単一のテーマを作成するか、親テーマ(全テーマ)の階層型リストを作成するかを指定します。

TRUEを指定すると、このプロシージャは全テーマを結果表のTHEME列に書き込みます。

FALSEを指定すると、このプロシージャは単一テーマ情報を結果表のTHEME列に書き込みます。これはデフォルトです。

num_themes

取り出すテーマの最大数を指定します。たとえば、10を指定すると、ドキュメントのテーマが最初の10個まで戻ります。デフォルトは50です。

0(ゼロ)またはNULLを指定すると、ドキュメント内の全テーマが戻ります。51以上のテーマがドキュメントに格納されている場合、概念階層が表示されるのは、最初の50テーマのみです。

language

ドキュメントの言語を指定します。 元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。第2章「Oracle Text索引付けの要素」「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。 元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。 詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。 元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。 第2章「Oracle Text索引付けの要素」「複合キャラクタ・セット列の索引付け」を参照してください。

ポリシーを作成します。

exec ctx_ddl.create_policy('mypolicy');

テーマを実行します。

declare
  la      varchar2(200);
  rtab    ctx_doc.theme_tab;
begin
   ctx_doc.policy_themes('mypolicy',
           'To define true madness, What is''t but to be nothing but mad?', rtab);
   for i in 1..rtab.count loop
     dbms_output.put_line(rtab(i).theme||':'||rtab(i).weight);
   end loop;
end;


POLICY_TOKENS

ドキュメントのすべての索引トークンを生成します。このプロシージャでは、CONTEXT索引は不要です。

構文

ctx_doc.policy_tokens(policy_name in VARCHAR2,
                      document       in  [VARCHAR2|CLOB|BLOB|BFILE],
                      restab         in  out nocopy token_tab,
                      language       in  VARCHAR2 default NULL,
                      format         in  VARCHAR2 default NULL,
                      charset        in  VARCHAR2 default NULL);

policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。

document

トークンを生成するドキュメントを指定します。

restab

token_tab PL/SQL索引付き表型の名前を指定します。

戻されるトークンは、ドキュメントの索引に挿入されるトークンです。ストップワードは戻されません。セクション・タグは、テキスト・トークンではないため、戻されません。


関連項目

token_tab型の構造の詳細は、「TOKENS」を参照してください。

language

ドキュメントの言語を指定します。 元表の言語列で使用する、Oracle Textでサポートされている言語の値を使用します。第2章「Oracle Text索引付けの要素」「MULTI_LEXER」を参照してください。

format

ドキュメントの形式を指定します。 元表のフォーマット列で指定する、Oracle Textでサポートされているフォーマットの値(TEXT、BINARYまたはIGNOREのいずれか)を使用します。 詳細は、「CREATE INDEX」のフォーマット列の説明を参照してください。

charset

ドキュメントのキャラクタ・セットを指定します。 元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。 第2章「Oracle Text索引付けの要素」「複合キャラクタ・セット列の索引付け」を参照してください。

トークンを取得します。

declare
  la     varchar2(200);
  rtab   ctx_doc.token_tab;
begin
   ctx_doc.policy_tokens('mypolicy',
        'To define true madness, What is''t but to be nothing but mad?',rtab);
   for i in 1..rtab.count loop
     dbms_output.put_line(rtab(i).offset||':'||rtab(i).token);
   end loop;
end;


SET_KEY_TYPE

このプロシージャを使用してCTX_DOCプロシージャを設定し、ROWIDまたはPRIMARY_KEYのドキュメントの識別子を受け取ります。この設定は、セッションの起動にのみ影響を与えます。

構文

ctx_doc.set_key_type(key_type in varchar2);
key_type

ROWIDまたはPRIMARY_KEYのいずれかを、CTX_DOCプロシージャに対する入力キー・タイプ(ドキュメント識別子)として指定します。

このパラメータのデフォルトは、CTX_DOC_KEY_TYPEシステム・パラメータの値です。


注意:

元表に主キーがない場合は、PRIMARY_KEYにkey_typeを指定しても無視されます。CTX_DOCプロシージャに指定するtextkeyパラメータは、ROWIDとして解釈されます。

CTX_DOCプロシージャを設定し、主キーのドキュメント識別子を受け取るには、次の文を発行します。

begin
ctx_doc.set_key_type('PRIMARY_KEY');
end


SNIPPET

CTX_DOC.SNIPPETプロシージャを使用して、ドキュメントの用語索引を作成します。この機能は、KWIC(Key Word in Context)としても知られています。マークアップされた問合せキーワードを前後のテキストとともに戻すため、ユーザーはコンテキストで問合せキーワードを評価できます。戻されたテキストには、ABOUT問合せを満たすテーマが含まれていることもあります。

たとえば、brilligslitheyの検索では、関連ドキュメントのフラグメントが戻される場合もあります。

'Twas <b>brillig</b>, and the <b>slithey</b> toves did gyre and

CTX_DOC.SNIPPETにより、ドキュメントの関連性の最も高いフラグメントが戻されます。それが不可能な場合は、複数の関連フラグメントが戻されます。

CTX_DOC.SNIPPETはCTX.DOC.MARKUPと類似していますが、次の点で異なります。CTX_DOC.MARKUPはハイライト表示された問合せ語句とともにドキュメント全体を戻すため、ユーザーはドキュメント全体に目を通して関連セクションを検索する必要があります。一方、CTX_DOC.SNIPPETが戻すのは、問合せキーワードを含むフラグメントのみです。

CTX_DOC.HIGHLIGHTCTX_DOC.SNIPPETと類似していますが、CTX_DOC.HIGHTLIGHTでは戻された語句に関して提供する関連情報がオフセットと長さのみであるため、その語句の関連性の度合いを把握できません。一方、CTX_DOC.SNIPPETは前後のテキストを戻すため、ユーザーは戻された語句がどの程度有益かすぐに判断できます。

このプロシージャのポリシーベースのバージョンは、CTX_DOC.POLICY_SNIPPETを参照してください。

構文

CTX_DOC.SNIPPET(
index_name IN VARCHAR2,
textkey                  IN VARCHAR2,
text_query               IN VARCHAR2,
starttag                 IN VARCHAR2 DEFAULT '<b>',
endtag                   IN VARCHAR2 DEFAULT '</b>',
entity_translation       IN BOOLEAN  DEFAULT TRUE,
separator                IN VARCHAR2 DEFAULT '<b>...</b>'
)
return varchar2;
index_name

テキスト列の索引名を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

text_query

ドキュメントを取り出すために使用された元の問合せ式を指定します。NULLの場合、ハイライトは生成されません。

text_queryにワイルド・カード、ステミング、ファジー・マッチングが指定されていて、結果としてストップワードが戻る場合、SNIPPETはストップワードをハイライト表示しません。

text_queryにTHRESHOLD演算子がある場合、その演算子は無視されます。

starttag

問合せキーワードのマークアップ用の開始タグを指定します。デフォルトは<b>です。

endtag

問合せキーワードのマークアップ用の終了タグを指定します。デフォルトは</b>です。

entity_translation

HTMLエンティティを変換させるかどうかを指定します。デフォルトはTRUEで、プロシージャによって出力される際、特殊エンティティ(<>&)が代替形式(&lt;&gt;&amp;)に変換されます。ただし、CTX_DOC.SNIPPETによって生成されたマークアップ・タグ内の特殊文字は変換されません。

separator

戻される複数の異なるフラグメントを区切る文字列を指定します。デフォルトは<b>...</b>です。

create table tdrbhk01 (id number primary key, text varchar2(4000));

insert into tdrbhk01 values (1, 'Oracle Text adds powerful search
<title>withintitle</title> and intelligent text management to the Oracle
database.  Complete.  You can search and manage documents, web pages,
catalog entries in more than 150 formats in any language.  Provides a
complete text query language and complete character support.  Simple.  You
can index and search text using SQL. Oracle Text Management can be done
using Oracle Enterprise Manager - a GUI tool.  Fast.  You can search
millions of documents, document,web pages, catalog entries using the
power and scalability of the database.  Intelligent.  Oracle Text''s
unique knowledge-base enables you to search, classify, manage
documents, clusters and summarize text based on its meaning as well as
its content. ');

exec ctx_ddl.create_section_group('my_sectioner','BASIC_SECTION_GROUP');
exec ctx_ddl.add_field_section('my_sectioner','title','title', false);

create index tdrbhk01x on tdrbhk01(text) indextype is ctxsys.context
  parameters ('filter CTXSYS.NULL_FILTER
               section group my_sectioner
               nopopulate');

select ctx_doc.snippet('tdrbhk01x','1',
              'search | classify') from dual;

次のような結果になります。

CTX_DOC.SNIPPET('TDRBHK01X','1','SEARCH|CLASSIFY')
------------------------------------------------------------------------

Text's unique knowledge-base enables you to <b>search</b>,
<b>classify</b>, manage documents, clusters and summarize

注意

CTX_DOC.SNIPPETでは、問合せテンプレートの使用はサポートされていません。

関連項目


THEMES

CTX_DOC.THEMESプロシージャを使用して、1つのドキュメントに対してテーマ・リストを1つ生成します。各テーマは、指定した結果表またはメモリー内PL/SQL表のいずれかに行として格納できます。


注意:

CTX_DOC.THEMESを使用するには、ナレッジ・ベースがインストールされている必要があります。ナレッジ・ベースは、Oracle Textとともにインストールされていない場合があります。ナレッジ・ベースの詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

構文1: メモリー内表記憶域

CTX_DOC.THEMES(
index_name IN VARCHAR2,
textkey         IN VARCHAR2,
restab          IN OUT NOCOPY THEME_TAB,
full_themes     IN BOOLEAN DEFAULT FALSE,
num_themes       IN NUMBER DEFAULT 50);

構文2: 結果表記憶域

CTX_DOC.THEMES(
index_name IN VARCHAR2,
textkey         IN VARCHAR2,
restab          IN VARCHAR2,
query_id        IN NUMBER DEFAULT 0,
full_themes     IN BOOLEAN DEFAULT FALSE,
num_themes       IN NUMBER DEFAULT 50);
index_name

テキスト列の索引名を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

restab

このプロシージャが、結果を表またはメモリー内PL/SQL表のいずれかに格納することを指定できます。

結果を表に格納するには、表の名前を指定します。


関連項目

テーマ結果表の構造の詳細は、付録A「Oracle Text結果表」「テーマ表」を参照してください。

結果をメモリー内表に格納するには、THEME_TAB型のメモリー内表の名前を指定します。THEME_TABデータ型は、次のように定義されます。

type theme_rec is record (
   theme varchar2(2000),
   weight number
);

type theme_tab is table of theme_rec index by binary_integer;

操作の前に、CTX_DOC.THEMESは、ユーザーが指定したTHEME_TABを消去します。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

full_themes

このプロシージャが、各ドキュメント・テーマに対して単一のテーマを作成するか、親テーマ(全テーマ)の階層型リストを作成するかを指定します。

TRUEを指定すると、このプロシージャは全テーマを結果表のTHEME列に書き込みます。

FALSEを指定すると、このプロシージャは単一テーマ情報を結果表のTHEME列に書き込みます。これはデフォルトです。

num_themes

取り出すテーマの最大数を指定します。たとえば、10を指定すると、ドキュメントのテーマが最初の10個まで戻ります。デフォルトは50です。

0(ゼロ)またはNULLを指定すると、ドキュメント内の全テーマが戻ります。51以上のテーマがドキュメントに格納されている場合、概念階層が表示されるのは、最初の50テーマのみです。

メモリー内テーマ

次の例では、ドキュメント1の最初の10テーマを生成し、それをthe_themesというメモリー内表に格納します。その後、表全体をループし、ドキュメントのテーマを表示します。

declare
 the_themes ctx_doc.theme_tab;

begin
 ctx_doc.themes('myindex','1',the_themes, numthemes=>10);
 for i in 1..the_themes.count loop
  dbms_output.put_line(the_themes(i).theme||':'||the_themes(i).weight);
  end loop;
end;

テーマ表

次の例では、テーマ表CTX_THEMESを作成します。

create table CTX_THEMES (query_id number,
                         theme varchar2(2000),
                         weight number);

単一テーマ

リストの各要素が単一テーマである場合、最初の20テーマまでのリストを取得するには、次の文を発行します。

begin
 ctx_doc.themes('newsindex','34','CTX_THEMES',1,full_themes => FALSE,
 num_themes=> 20);
end;

全テーマ

リストの各要素が親テーマの階層リストの場合、トップ20のテーマのリストを取得するには、次の文を発行します。

begin
ctx_doc.themes('newsindex','34','CTX_THEMES',1,full_themes => TRUE, num_
themes=>20);
end;


TOKENS

このプロシージャを使用して、ドキュメント内のすべてのテキスト・トークンを識別します。戻されるトークンは、索引に挿入されるトークンです。この機能は、ドキュメントの分類、ルーティングまたはクラスタ化を行う場合に有効です。

ストップワードは戻されません。セクション・タグは、テキスト・トークンではないため、戻されません。

構文1: メモリー内表記憶域

CTX_DOC.TOKENS(index_name IN VARCHAR2,
               textkey         IN VARCHAR2,
               restab          IN OUT NOCOPY TOKEN_TAB);

構文2: 結果表記憶域

CTX_DOC.TOKENS(index_name IN VARCHAR2,
               textkey         IN VARCHAR2,
               restab          IN VARCHAR2,
               query_id        IN NUMBER DEFAULT 0);
index_name

テキスト列の索引名を指定します。

textkey

一意のドキュメントのID(通常は主キー)を指定します。

textkeyパラメータは、次のいずれかです。

主キーとROWIDの識別を切り替えるには、CTX_DOC.SET_KEY_TYPEを使用します。

restab

このプロシージャが、結果を表またはメモリー内PL/SQL表のいずれかに格納することを指定できます。

戻されるトークンは、textkeyで指定したドキュメント(または行)の索引に挿入されるトークンです。ストップワードは戻されません。セクション・タグは、テキスト・トークンではないため、戻されません。

トークン表の指定

結果を表に格納するには、表の名前を指定します。トークン表には自由に名前を付けることができますが、次の名前およびデータ型を持つ列が組み込まれている必要があります。

表8-1 トークン表に必要な列

列名 データ型 説明
QUERY_ID NUMBER CTX_DOC.TOKENSへの特定のコールで生成された結果の識別子(複数のTOKENコールの結果を表に格納するときのみ移入されます)。
TOKEN VARCHAR2(64) テキスト内のトークン文字列。
OFFSET NUMBER ドキュメント内のトークンの位置(ドキュメントの開始位置1との相対的な位置)。
LENGTH NUMBER トークンの文字の長さ。

メモリー内表の指定

結果をメモリー内表に格納するには、TOKEN_TAB型のメモリー内表の名前を指定します。TOKEN_TABデータ型は、次のように定義されます。

type token_rec is record (
token varchar2(64),
offset number,
length number
);

type token_tab is table of token_rec index by binary_integer;

CTX_DOC.TOKENSにより、操作の前にTOKEN_TABが消去されます。

query_id

restabに挿入した行の識別に使用する識別子を指定します。

メモリー内トークン

次の例では、ドキュメント1のトークンを生成し、それをメモリー内表に格納して、the_tokensとして宣言します。その後、表全体をループし、ドキュメントのトークンを表示します。

declare
 the_tokens ctx_doc.token_tab;

begin
 ctx_doc.tokens('myindex','1',the_tokens);
 for i in 1..the_tokens.count loop
  dbms_output.put_line(the_tokens(i).token);
  end loop;
end;