プライマリ・コンテンツに移動
Oracle® Textリファレンス
12cリリース1 (12.1)
B71316-03
目次へ移動
目次
索引へ移動
索引

前
次

9 CTX_DOCパッケージ

CTX_DOC PL/SQLパッケージには、抽出したテキストのハイライトまたはドキュメントのテーマ・リストの生成など、ドキュメント・サービスを要求するためのプロシージャとファンクションが用意されています。

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

名前 説明

FILTER

プレーン・テキストまたはHTML形式のドキュメントを生成します。

GIST

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

HIGHLIGHT

ドキュメントのオフセット情報をハイライト表示するプレーン・テキストまたはHTML形式を生成します。

IFILTER

プレーン・テキスト形式のバイナリ・データを生成します。USER_DATASTOREプロシージャからコールできます。

MARKUP

問合せ語句がハイライト表示されているドキュメントのプレーン・テキストまたはHTML形式を生成します。

PKENCODE

他のCTX_DOCプロシージャで使用するコンポジット・テキストキー文字列(値)をコード化します。

POLICY_FILTER

プレーン・テキストまたはHTML形式のドキュメントを、索引なしで生成します。

POLICY_GIST

ドキュメントの要点またはテーマ・サマリーを、索引なしで生成します。

POLICY_HIGHLIGHT

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

POLICY_LANGUAGES

テキストのセクションについて言語をフェッチします。

POLICY_MARKUP

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

POLICY_NOUN_PHRASES

ドキュメントの名詞句を抽出します。

POLICY_PART_OF_SPEECH

ドキュメント内の各単語の品詞を抽出します。

POLICY_SNIPPET

ドキュメントの用語索引を、問合せ語句に基づいて索引なしで生成します。

POLICY_STEMS

テキスト本文にある各単語の語幹を抽出します。

POLICY_THEMES

ドキュメントのテーマのリストを、索引なしで生成します。

POLICY_TOKENS

ドキュメントのすべての索引トークンを、索引なしで生成します。

SET_KEY_TYPE

CTX_DOCプロシージャを設定し、ROWIDまたは主キーのドキュメント識別子を受け取ります。

SNIPPET

ドキュメントの用語索引を問合せ語句に基づいて生成します。

THEMES

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

TOKENS

ドキュメントのすべての索引トークンを生成します。

正引き索引の機能を使用して、プロシージャSNIPPETHIGHLIGHT およびMARKUP のパフォーマンスを向上できます。プロシージャFILTER GISTTHEMESTOKENSのパフォーマンスは、Oracle Textのコピーの保存機能を使用して向上できます。

関連項目:

正引き索引およびコピーの保存機能の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

9.1 CTX_DOCパッケージのプロシージャについて

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

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

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

9.2 FILTER

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

注意:

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

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

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

exec  CTX_DOC.HIGHLIGHT_CLOB_QUERY(
          index_name IN VARCHAR2,
          textkey IN VARCHAR2,
          text_query IN CLOB,
          restab IN OUT NOCOPY HIGHLIGHT_TAB,
          plaintext IN BOOLEAN DEFAULT FALSE,
          use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文2: 結果表記憶域

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

exec  CTX_DOC.HIGHLIGHT_CLOB_QUERY(
          index_name IN VARCHAR2,
          textkey IN VARCHAR2,
          text_query IN CLOB,
          restab IN VARCHAR2,
          query_id IN NUMBER DEFAULT 0,
          plaintext IN BOOLEAN DEFAULT FALSE,
          use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);
index_name

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

textkey

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

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

  • 単一列の主キーの値。

  • コンポジット(複数列)主キーのコード化された仕様。CTX_DOC.PKENCODE を使用します。

  • ドキュメントを含む行のROWID。

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

restab

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

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

関連項目:

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

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

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

query_id

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

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

plaintext

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

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

  • CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

  • CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

  • CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

インメモリー・フィルタ

次のコードは、ドキュメントをメモリー内の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;

9.3 GIST

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

構文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,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文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,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);
index_name

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

textkey

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

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

  • 単一列の主キーの値。

  • コンポジット(複数列)主キーのコード化された仕様。コンポジット・テキストキーをコード化するには、CTX_DOC.PKENCODEプロシージャを使用します。

  • ドキュメントを含む行のROWID。

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

restab

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

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

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

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

query_id

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

glevel

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

  • 段落の場合はP

  • 文の場合はS

デフォルトはPです。

pov

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

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

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

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

注意:

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

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

numParagraphs

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

注意:

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

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

maxPercent

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

注意:

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

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

num_themes

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

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

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

  • CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

  • CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

  • CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

インメモリー要点

次の例では、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;

9.4 HIGHLIGHT

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

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

このプロシージャは、通常、問合せの後で処理するドキュメントを決めてから使用します。ハイライト・オフセットは、インメモリーPL/SQL表または結果表のいずれかに格納できます。

問合せ時に主にドキュメントのフィルタ処理に使用される述語が含まれる問合せの場合、ハイライト中に述語は無視されることに注意してください。これはSNIPPETMARKUPおよびHIGHLIGHTプロシージャに適用されます。次の述語は、この目的でフィルタ述語として扱われ、XML属性内を検索します。SDATAHASPATHおよびWITHIN/INPATH

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

Oracle Textの正引き索引の機能を使用して、プロシージャSNIPPETHIGHLIGHTおよびMARKUP のパフォーマンスを向上できます。

関連項目:

正引き索引の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

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

exec 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,
        use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

exec CTX_DOC.HIGHLIGHT_CLOB_QUERY(
        index_name  IN VARCHAR2,
        textkey     IN VARCHAR2,
        text_query  IN CLOB,
        restab      IN OUT NOCOPY HIGHLIGHT_TAB,
        plaintext   IN BOOLEAN DEFAULT FALSE,
        use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文2: 結果表記憶域

exec 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,
          use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

exec CTX_DOC.HIGHLIGHT_CLOB_QUERY(
          index_name  IN VARCHAR2,
          textkey     IN VARCHAR2,
          text_query  IN CLOB,
          restab      IN VARCHAR2,
          query_id    IN NUMBER DEFAULT 0,
          plaintext   IN BOOLEAN DEFAULT FALSE,
          use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);
index_name

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

textkey

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

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

  • 単一列の主キーの値。

  • コンポジット(複数列)主キーのコード化された仕様。CTX_DOC.PKENCODE プロシージャを使用します。

  • ドキュメントを含む行のROWID。

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

text_query

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

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

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

restab

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

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

関連項目:

ハイライト結果表の構造の詳細は、「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ドキュメントを索引付けしている場合は、FALSEを指定してドキュメントのHTMLオフセットを生成します。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

  • CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

  • CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

  • CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

ハイライト表の作成

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

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

フィルタが存在する状態でのワード・ハイライト

次のような問合せでハイライトを実行すると、キーワード(この例では「dog」)のみハイライトされます。AND演算子の後のフィルタ述語は無視されます。

begin
ctx_doc.highlight('newsindex', '20', 'dog AND cat WITHIN titlesection@name', 'hightab', 0, FALSE);
end;
begin
ctx_doc.highlight('newsindex', '20', 'dog AND SDATA(price > 100)', 'hightab', 0, FALSE);
end;

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

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

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

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

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

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

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

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

制限事項

CTX_DOC.HIGHLIGHTでは、問合せテンプレートの使用やXML属性値のハイライト表示はサポートされていません。

関連項目

"POLICY_HIGHLIGHT"

"MARKUP "

"SNIPPET"

9.5 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
    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;

9.6 MARKUP

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

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

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

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

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

問合せ時に主にドキュメントのフィルタ処理に使用される述語が含まれる問合せの場合、MARKUP中に述語は無視されることに注意してください。次の述語は、この目的でフィルタ述語として扱われ、XML属性内を検索します。SDATAHASPATHおよびWITHIN/INPATH

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

Oracle Textの正引き索引の機能を使用して、プロシージャSNIPPETHIGHLIGHT およびMARKUPのパフォーマンスを向上できます。

関連項目:

正引き索引の詳細は、『Oracle Textアプリケーション開発者ガイド』を参照してください。

注意:

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

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

exec 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,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

exec CTX_DOC.MARKUP_CLOB_QUERY(
index_name     IN VARCHAR2,
textkey        IN VARCHAR2,
text_query     IN CLOB,
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,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文2: 結果表記憶域

exec 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,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

exec CTX_DOC.MARKUP_CLOB_QUERY(
index_name     IN VARCHAR2,
textkey        IN CLOB,
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,
use_saved_copy IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);
index_name

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

textkey

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

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

  • 単一列の主キーの値。

  • コンポジット(複数列)主キーのコード化された仕様。CTX_DOC.PKENCODE プロシージャを使用します。

  • ドキュメントを含む行のROWID。

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

text_query

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

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

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

restab

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

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

関連項目:

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

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

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

query_id

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

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

plaintext

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

tagset

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

タグセット タグ タグ値

TEXT_DEFAULT

starttag

<<<

TEXT_DEFAULT

endtag

>>>

HTML_DEFAULT

starttag

<B>

HTML_DEFAULT

endtag

</B>

HTML_NAVIGATE

starttag

<A NAME=ctx%CURNUM><B>

HTML_NAVIGATE

endtag

</B></A>

HTML_NAVIGATE

prevtag

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

HTML_NAVIGATE

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""タグセット""の記述を参照してください。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

  • CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

  • CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

  • CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

インメモリー・マークアップ

次のコードは、ドキュメント(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;

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

フィルタが存在する状態でのワード・ハイライト

次のような問合せでマークアップを実行すると、キーワード(この例では「dog」)のみマークアップされます。AND演算子の後のフィルタ述語は無視されます。

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

begin
  ctx_doc.markup(index_name => 'my_index',
                      textkey => '23',
                      text_query => 'dog AND SDATA(price > 100)',
                      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;

制限事項

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

関連項目

"POLICY_MARKUP"

"SNIPPET"

9.7 PKENCODE

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

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

構文

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は、ドキュメントのコンポジット・テキストキーの値を構成します。

9.8 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ドキュメントを索引付けしている場合は、FALSEを指定してHTML形式のドキュメントを生成します。

language

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

format

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

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。「フィルタ型」を参照してください。

9.9 POLICY_GIST

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

構文

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

  • 文の場合はS

デフォルトはPです。

pov

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

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

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

注意:

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

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

numParagraphs

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

注意:

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

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

maxPercent

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

注意:

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

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

num_themes

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

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

language

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

format

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

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。

9.10 POLICY_HIGHLIGHT

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

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

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

構文

exec 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
);

exec ctx_doc.policy_highlight_clob_query(
                         policy_name  in VARCHAR2,
                         document     in [VARCHAR2|CLOB|BLOB|BFILE],
                         text_query   in CLOB,
                         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ドキュメントを索引付けしている場合は、FALSEを指定してドキュメントのHTMLオフセットを生成します。

language

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

format

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

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。

制限事項

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

9.11 POLICY_LANGUAGES

テキストのセクションについて言語をフェッチします。

言語の説明とスコアの表を戻します。スコアは、指定したテキストが特定の言語であることをシステムが確定できる信頼度です。

構文

CTX_DOC.POLICY_LANGUAGES (
   policy_name    IN VARCHAR2 | CLOB,
   document       IN VARCHAR2,
   restab         IN OUT NOCOPY CTX_DOC.LANGUAGE_TAB
);
policy_name

CTX_DDL.CREATE_POLICYメソッドを使用して以前に作成されたポリシー。指定したポリシーにセクション化プリファレンスが含まれている場合、APIはそのセクション化プリファレンスを優先します。たとえばHTMLセクション化が指定されている場合、入力ドキュメントを処理する前にHTMLタグが削除されます。

document

言語を抽出するテキストの本文。テキストは、UTF-8文字エンコーディングのプレーン・テキストとみなされます。

restab

言語抽出プロセスの結果。結果は、レコードの表です。各レコードには、言語文字列と、言語文字列ごとのスコアの2つの属性があります。スコアは、0から100の範囲で、指定したテキストが特定の言語であることをシステムが確定できる信頼度です。生成される言語は、信頼度が最も高い言語を先頭にソートして戻されます。

restabの表レイアウトは、HIGHLIGHTの表レイアウトと類似しています。

関連項目:

restabレイアウトの詳細は、「HIGHLIGHT」 を参照してください

CTX_DOC.POLICY_LANGUAGESとPOLICY_STEMSでサポートされる言語

言語の抽出は、AUTO_LEXERでサポートされている言語のテキストでサポートされます。このリリースのCTX_DOC.POLICY_LANGUAGESとCTX_DOC.POLICY_STEMSでサポートされている言語は、次のとおりです。

アラビア語

ノルウェー語(ブークモール)

カタロニア語

クロアチア語

チェコ語

デンマーク語

オランダ語

英語

フィンランド語

フランス語

ドイツ語

ギリシャ語

ヘブライ語

ハンガリー語

イタリア語

日本語

韓国語

ポーランド語

ノルウェー語(ニーノシュク)

ペルシア語

ポルトガル語

ルーマニア語

ロシア語

セルビア語

スロバキア語

スロベニア語

中国語(簡体字)

スペイン語

スウェーデン語

タイ語

中国語(繁体字)

トルコ語

関連項目

"POLICY_STEMS"

"AUTO_LEXER"

9.12 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
);

ctx_doc.policy_markup_clob_query(
                      policy_name     in VARCHAR2,
                      document        in [VARCHAR2|CLOB|BLOB|BFILE],
                      text_query      in CLOB,
                      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

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

text_queryにNULLが含まれている場合、このプロシージャは失敗し、エラーが生成されます。

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

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

restab

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

plaintext

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

tagset

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

タグセット タグ タグ値

TEXT_DEFAULT

starttag

<<<

TEXT_DEFAULT

endtag

>>>

HTML_DEFAULT

starttag

<B>

HTML_DEFAULT

endtag

</B>

HTML_NAVIGATE

starttag

<A NAME=ctx%CURNUM><B>

HTML_NAVIGATE

endtag

</B></A>

HTML_NAVIGATE

prevtag

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

HTML_NAVIGATE

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でサポートされている言語の値を使用します。「Oracle Text索引付けの要素」「MULTI_LEXER」を参照してください。

format

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

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。「フィルタ型」を参照してください。

制限事項

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

9.13 POLICY_NOUN_PHRASES

指定したドキュメントの各名詞句内の各単語の品詞情報とともに名詞句を抽出できる機能を提供します。

たとえば、次の文について考えてみます。

「The mayor of Chicago is giving a brief press conference.」

この入力の名詞句は「mayor of Chicago」と「brief press conference」です。入力テキストのサブグループは戻されません。たとえば、前述の例で、「mayor」、「Chicago」、「brief press」、「press conference」、「press」、「conference」は戻されません。

POLICY_NOUN_PHRASES (POLICY_PART_OF_SPEECH)は次の言語をサポートします。

  • オランダ語

  • 英語

  • ドイツ語

  • フランス語

  • イタリア語

  • 日本語

  • 韓国語

  • 中国語(簡体字)

  • スペイン語

  • 中国語(繁体字)

構文

ctx_doc.policy_noun_phrases (
   policy_name    in varchar2,
   document       in varchar2 | CLOB,
   restab         in out nocopy noun_phrase_tab,
   language       in varchar2  default NULL,
   format         in varchar2  default NULL,
   charset        in varchar2  default NULL
);
policy_name

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

document

言語を抽出するテキストの本文。テキストは、UTF-8文字エンコーディングのプレーン・テキストとみなされます。

restab

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

language

言語を指定します。この項のサポートされている言語のリストを参照してください。このパラメータがnullの場合、言語は自動的に検出されます。言語の検出には負荷が伴います。

format

入力テキストのフォーマット。

charset

入力テキストのキャラクタ・セット。

POLICY_NOUN_PHRASESおよびPOLICY_PART_OF_SPEECHで使用される略称

表9-1POLICY_NOUN_PHRASESおよびPOLICY_PART_OF_SPEECHの問合せで使用する略称のリストを示します。例ではこれらの略称を使用します。

表9-1 品詞の略称

略称 品詞

N

noun

propN

nounProper

V

動詞

Adj

adjective

Adv

adverb

Prep

preposition

Part

不変化詞

Punct

句読

Pro

代名詞

Wh

疑問詞

Det

限定詞

Conj

接続詞

Card

基数

Ord

序数

Suf

接尾辞

Pre

接頭辞

Acr

頭字語

Poss

所有格

Unk

不明

POLICY__NOUN_PHRASESの例

この項の例では、表9-1に示す略称を使用します。

set serverout on
create or replace function toString(b boolean) return varchar2 is
    begin
      if (b) then
        return 'TRUE';
      end if;
      return 'FALSE';
 end;
 /
 
declare
 the_nps ctx_doc.noun_phrase_tab;
begin
  ctx_ddl.create_preference('rvlex', 'AUTO_LEXER');
  ctx_ddl.set_attribute('rvlex','mixed_case','YES');
  ctx_ddl.set_attribute('rvlex','timeout',0);
 
  ctx_ddl.create_policy(policy_name => 'rv_policy_21',lexer => 'rvlex');
 
 ctx_doc.policy_noun_phrases('rv_policy_21','The mayor of Chicago is giving a
 brief press conference',the_nps);
 dbms_output.put_line(the_nps.count);
 
 for i in 1..the_nps.count loop
      if (the_nps(i).is_phrase_start) then
        if (i>1) then
          dbms_output.put(']');
          dbms_output.new_line;
        end if;
        dbms_output.put('Phrase{term,POS,is_in_lex,offset,len,is_phrase_
        start}:[');
      else
        dbms_output.put(',');
      end if;
      dbms_output.put('{' || the_nps(i).term || ',' || the_nps(i).pos_tag || ','
      || toString(the_nps(i).is_in_lexicon) || ',' || the_nps(i).offset 
      || ',' || the_nps(i).length || ',' || toString(the_nps(i).is_phrase_start)
      || '}');
      end loop;
      dbms_output.put(']');
      dbms_output.new_line;
end;
/

この例の出力:

Phrase{term,POS,is_in_lex,offset,len,is_phrase_start}:
[{The,Det,TRUE,1,3,TRUE},{mayor,N,TRUE,5,5,FALSE},
{of,Prep,TRUE,11,2,FALSE},{Chicago,propN,TRUE,14,7,FALSE}

Phrase{term,POS,is_in_lex,offset,len,is_phrase_start}:
[{a,Det,TRUE,32,1,TRUE},{brief,N,TRUE,34,5,FALSE},
{press,N,TRUE,40,5,FALSE},{conference,N,TRUE,46,10,FALSE}]

関連項目

"POLICY_PART_OF_SPEECH"

9.14 POLICY_PART_OF_SPEECH

テキスト本文にある各単語の品詞を抽出します。

POLICY_NOUN_PHRASESは、サポートされる言語のリストを持っています。

構文

ctx_doc.policy_part_of_speech (
   policy_name       in varchar2,
   document          in varchar2 | CLOB,
   restab            in out nocopy noun_phrase_tab,
   language          in varchar2  default NULL,
   format            in varchar2  default NULL,
   charset           in varchar2  default NULL
   disambiguate_tags in boolean default TRUE
);
policy_name

CTX_DDL.CREATE_POLICYを使用して作成されたポリシーの名前を指定します。指定したポリシーにセクション化プリファレンスが含まれている場合、APIはそのセクション化プリファレンスを優先します。たとえばHTMLセクション化が指定されている場合、入力ドキュメントを処理する前にHTMLタグが削除されます。

document

言語を抽出するテキストの本文。テキストは、UTF-8文字エンコーディングのプレーン・テキストとみなされます。

restab

CLOBロケータの名前を指定します。この問合せでは名詞句の抽出の結果を含む表を戻します。各単語に対し、次の属性も戻されます。

  • pos_tags: この単語の品詞タグ。最初にリストされている最も可能性の高いタグを含む、複数の品詞タグがある場合があります。

  • offset: 入力文字列での単語のオフセット

  • length: 入力文字列での単語の長さ。

  • is_in_lexicon: 単語がレキシコン内にあるかどうかを示します。

language

言語を指定します。この項のサポートされている言語のリストを参照してください。このパラメータがnullの場合、言語は自動的に検出されます。言語の検出には負荷が伴います。

format

入力テキストのフォーマット。

charset

入力テキストのキャラクタ・セット。

POLICY_PART_OF_SPEECHの例

この項の例では、表9-1に示す略称を使用します。

set serveroutput on;
declare
  the_nps ctx_doc.part_of_speech_tab;
begin
   ctx_doc.policy_part_of_speech(policy_name => 'rv_policy_21',
                                document => 'The mayor of Chicago is giving 
                                             a brief press conference',
                                 restab => the_nps,
                                 disambiguate_tags => false,
                                 language => 'english');
 for i in 1..the_nps.count loop
  dbms_output.put('word:' || the_nps(i).word || ',pos:[');
  for j in 1..the_nps(i).pos_tags.count loop
    dbms_output.put(the_nps(i).pos_tags(j) || ',');
  end loop;
  dbms_output.put_line(']');
 end loop;
end;
/

この例の出力:

word:The,pos:[Det,]
word:mayor,pos:[N,]
word:of,pos:[Prep,]
word:Chicago,pos:[propN,]
word:is,pos:[V,]
word:giving,pos:[N,V,Adj,]
word:a,pos:[Det,]
word:brief,pos:[N,V,Adj,]
word:press,pos:[N,V,]
word:conference,pos:[N,V,]

関連項目

"POLICY_NOUN_PHRASES"

"表6-1"

9.15 POLICY_SNIPPET

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

構文

構文1

exec 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>'
radius	                   IN INTEGER DEFAULT 25,
max_length               IN INTEGER DEFAULT 250
)
return varchar2;

構文2

exec CTX_DOC.POLICY_SNIPPET_CLOB_QUERY(
policy_name              IN VARCHAR2,
document                 IN [VARCHAR2|CLOB|BLOB|BFILE],
text_query               IN CLOB,
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>'
radius	                   IN INTEGER DEFAULT 25,
max_length               IN INTEGER DEFAULT 250
)
return varchar2;
policy_name

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

document

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

text_query

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

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

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

language

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

format

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

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、Oracle Textでサポートされている値を使用します。「フィルタ型」を参照してください。

starttag

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

endtag

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

entity_translation

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

separator

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

radius

セグメントでヒットした問合せのいずれかの側に表示される文字の数を指定します。ヒット問合せより前の文字数カウントは、セグメントに表示される最初のヒット問合せの最初の文字で始まります。同様に、ヒット問合せより後の文字数カウントは、特定のセグメントに表示される最後のヒット問合せの最後の文字で始まります。半径が重なる場合には、2つのセグメントが1つのマージされます。両側に表示される文字の数は、文または単語の最初と最後に一致するように、+/-10文字単位で変更できます。

値を0にするときは、特に注意が必要です。指定した半径は自動的に設定され、文によって異なります。結果の最適予測が表示され、これは文全体への一致を試みます。ヒット問合せの両側の半径は、大きく異なるのが普通です。

デフォルト値は25です。

max_length

スニペット出力の最大長を、文字単位で指定します。この値には現在、CTX_DOC.SNIPPETとCTX_DOC.POLICY_SNIPPET (VARCHAR2)の現在の戻り型によって上限が設定されます。出力が戻り型VARCHAR2より長くなる場合は、結果が切り捨てられます。

max_lengthのデフォルト値は250です。

注意:

max_length値を極端に小さい値に設定すると、スニペットが生成されない場合があります。たとえば、max_length0に設定した場合や、max_lengthを問合せトークン自体の長さより小さく設定した場合、スニペットはまったく生成されません。

制限事項

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

CTX_DOC.POLICY_SNIPPETNULL_SECTION_GROUPで使用すると、コンテキスト内のマークアップ・キーワードが表示されます。ただし、XMLドキュメントでこのプロシージャを使用する場合は制限があります。XML_SECTION_GROUPまたはAUTO_SECTION_GROUPで使用すると、XML構造は無視され、ユーザーが指定したタグは外されます。したがって、戻される結果には、テキストの前後の部分が含まれることになります。

関連項目

"SNIPPET"

"MARKUP "

9.16 POLICY_STEMS

テキスト本文にある各単語の語幹を抽出します。このプロシージャはAUTO_LEXERで使用されます。このプロシージャは、「POLICY_LANGUAGES」に示されたAUTO_LEXERによってサポートされる言語のみ使用できます。

構文

exec CTX_DOC.POLICY_STEMS (
   policy_name   in varchar2,
   document      in varchar2 | CLOB,
   restab        in out nocopy ctx_doc.stem_group_tab,
   language      in varchar2  default NULL,
   format        in varchar2  default NULL,
   charset       in varchar2  default NULL
);
policy_name

CTX_DDL.CREATE_POLICYメソッドを使用して以前に作成されたポリシー。指定したポリシーにHTML_SECTION_GROUPセクション化プリファレンスが含まれている場合、APIはそのセクション化プリファレンスを優先します。たとえばHTMLセクション化が指定されている場合、入力ドキュメントを処理する前にHTMLタグが削除されます。

ポリシーはAUTO_LEXERしか使用できません。

document

言語を抽出するテキストの本文。テキストは、UTF-8文字エンコーディングのプレーン・テキストとみなされます。

restab

語幹抽出プロセスの結果。PL/SQL表で戻される値は、入力文字列ドキュメントの単語ごとに1つのセルを持ちます。各単語は、レクサーで定義される複数ワードでもかまいません。単語ごとに、すべての語幹(すべての代替語幹も含む)が戻されます。語幹ごとに、語幹である単語のオフセットと長さ(入力文字列の)が戻されます。さらに、語幹ごとに、その語幹がレキシコンで見つかったかどうかを示すブール値が戻されます。

stem_group_tabstem_group_recordsの表です。

language

入力テキストの言語。言語文字列は、言語抽出の前のセクションで指定した値のいずれかです。このパラメータがnullの場合、言語は自動的に検出されます。言語の検出には負荷が伴います。したがって、言語がわかっている場合には言語の値を指定するようにしてください。言語のリストは、「POLICY_LANGUAGES」を参照してください。

format

入力テキストのフォーマット。

charset

入力テキストのキャラクタ・セット。

制限事項と注意

語幹抽出プロセスは、一定の非標準のワード形式(大文字表記エラーなど)にも標準形式にも対応しています。したがって、非公式または不正確なテキスト(電子メール、オンライン・ドキュメント、問合せなど)の処理にも使用できます。また、大/小文字の変動、ハイフン、アクセント指定のない文字などの差異も処理されます。

語幹抽出プロセスで、複合語は分割されませんが、かわりに#文字で複合語が区切られます。このような複合語は、ドイツ語で一般的です。たとえば、ドイツ語の複合語Bildungsroman (「教養」の意のBildungと「小説」の意のRomanから成る)は、Bildungsromanの2つの語幹ではなく、Bildungs#romanという1つの語幹になります。

9.17 POLICY_THEMES

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

構文

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でサポートされている言語の値を使用します。「Oracle Text索引付けの要素」「MULTI_LEXER」を参照してください。

format

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

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、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;

9.18 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でサポートされている言語の値を使用します。「Oracle Text索引付けの要素」「MULTI_LEXER」を参照してください。

format

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

charset

ドキュメントのキャラクタ・セットを指定します。元表のキャラクタ・セット列で指定する、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;

9.19 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

9.20 SNIPPET

ドキュメントの用語索引を作成するには、CTX_DOC.SNIPPETプロシージャを使用します。スニペットの出力は、セグメントのコレクションです。用語索引とは、問合せ語句とその前後のテキストを含むテキストの断片(フラグメント)です。この用語索引は、マークアップされた問合せキーワードを前後のテキストと一緒に戻すため、文脈付きキーワード(KWIC)としても知られており、ユーザーは問合せキーワードを文脈で評価できます。戻されたテキストには、ABOUT問合せを満たすテーマが含まれていることもあります。

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

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

CTX_DOC.SNIPPETは、問合せ語句を含んでいるドキュメントを対象として、関連性の最も高い1つ以上のフラグメントを戻します。CTX_DOC.SNIPPETは前後のテキストも含めて戻すため、ユーザーは戻された語句の有用性を即時に評価できます。CTX_DOC.SNIPPETは、戻されたテキストのワードがマークアップされていない場合に全体のドキュメントを戻します。

問合せ時に主にドキュメントのフィルタ処理に使用される述語が含まれる問合せの場合、SNIPPET生成中に述語は無視されることに注意してください。次の述語は、この目的でフィルタ述語として扱われ、xml属性内を検索します。SDATAHASPATHおよびWITHIN/INPATH

関連項目:

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

構文

構文1

exec 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>',
radius	                   IN INTEGER DEFAULT 25,
max_length               IN INTEGER DEFAULT 250
use_saved_copy           IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK
return varchar2
);

構文2

exec CTX_DOC.SNIPPET_CLOB_QUERY(
index_name               IN VARCHAR2,
textkey                  IN VARCHAR2,
text_query               IN CLOB,
starttag                 IN VARCHAR2 DEFAULT '<b>',
endtag                   IN VARCHAR2 DEFAULT '</b>',
entity_translation       IN BOOLEAN DEFAULT TRUE,
separator                IN VARCHAR2 DEFAULT '<b>...</b>',
radius	                   IN INTEGER DEFAULT 25,
max_length               IN INTEGER DEFAULT 250
use_saved_copy           IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK
return varchar2
);
index_name

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

textkey

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

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

  • 単一列の主キーの値。

  • コンポジット(複数列)主キーのコード化された仕様。テキストキーがコンポジット・キーの場合は、CTX_DOC.PKENCODEプロシージャを使用して、コンポジット・テキストキー文字列をコード化する必要があります。

  • ドキュメントを含む行のROWID。

主キーと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>です。

radius

セグメントでヒットした問合せのいずれかの側に表示される文字の数を指定します。ヒット問合せより前の文字数カウントは、セグメントに表示される最初のヒット問合せの最初の文字で始まります。同様に、ヒット問合せより後の文字数カウントは、特定のセグメントに表示される最後のヒット問合せの最後の文字で始まります。半径が重なる場合には、2つのセグメントが1つのマージされます。両側に表示される文字の数は、文または単語の最初と最後に一致するように、+/-10文字単位で変更できます。

値を0にするときは、特に注意が必要です。指定した半径は自動的に設定され、文によって異なります。結果の最適予測が表示され、これは文全体への一致を試みます。ヒット問合せの両側の半径は、大きく異なるのが普通です。

デフォルト値は25です。

max_length

スニペット出力の最大長を、文字単位で指定します。この値には現在、CTX_DOC.SNIPPET and CTX_DOC.POLICY_SNIPPET (VARCHAR2)の現在の戻り型によって上限が設定されます。出力が戻り型VARCHAR2より長くなる場合は、結果が切り捨てられます。max_lengthのデフォルト値は250です。

max_length値を極端に小さい値に設定すると、スニペットが生成されない場合があります。たとえば、max_length0に設定した場合や、max_lengthを問合せトークン自体の長さより小さく設定した場合、スニペットはまったく生成されません。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

  • CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

  • CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

  • CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

create table tdrbhk01 (id number primary key, text varchar2(4000));
 
insert into tdrbhk01 values (1, 'Oracle Text adds powerful search
 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. ');
 
create index tdrbhk01x on tdrbhk01(text) indextype is ctxsys.context;
 
create or replace function my_snippet_wrapper(
 key in varchar2,
 query in varchar2,
 radius in number,
 max_length in number) return varchar2 is
  buff varchar2(4000);
 begin
  buff := ctx_doc.snippet('tdrbhk01x', key, query, '<b>', '<b>', true, '<b>..<b>', radius, max_length);
  return buff;
 end;
/
show errors;
 
select my_snippet_wrapper('1','Oracle', 10, 100) 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では、問合せテンプレートの使用はサポートされていません。

CTX_DOC.SNIPPETNULL_SECTION_GROUPで使用すると、コンテキスト内のマークアップ・キーワードが表示されます。ただし、XMLドキュメントでこのプロシージャを使用する場合は制限があります。XML_SECTION_GROUPまたはAUTO_SECTION_GROUPで使用すると、XML構造は無視され、ユーザーが指定したタグは外されます。したがって、戻される結果には、テキストの前後の部分が含まれることになります。

関連項目

"POLICY_SNIPPET"

"HIGHLIGHT "

"MARKUP "

9.21 THEMES

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

構文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,
use_saved_copy  IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文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,
use_saved_copy  IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);
index_name

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

textkey

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

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

  • 単一列の主キーの値。

  • コンポジット(複数列)主キーのコード化された仕様。テキストキーがコンポジット・キーの場合は、CTX_DOC.PKENCODEプロシージャを使用して、コンポジットtextkey文字列をコード化する必要があります。

  • ドキュメントを含む行のROWID。

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

restab

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

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

結果をインメモリー表に格納するには、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を指定すると、ドキュメント内の全テーマが戻ります。50を超えるテーマがドキュメントに格納されている場合、概念階層が表示されるのは、最初の50テーマのみです。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

  • CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

  • CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

  • CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

インメモリー・テーマ

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

declare
 the_themes ctx_doc.theme_tab;

begin
 ctx_doc.themes('myindex','1',the_themes, num_themes=>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;

9.22 TOKENS

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

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

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

CTX_DOC.TOKENS(index_name      IN VARCHAR2,
               textkey         IN VARCHAR2,
               restab          IN OUT NOCOPY TOKEN_TAB,
               use_saved_copy  IN NUMBER DEFAULT CTX_DOC.SAVE_COPY_FALLBACK);

構文2: 結果表記憶域

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

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

textkey

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

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

  • 単一列の主キーの値。

  • コンポジット(複数列)主キーのコード化された仕様。コンポジットtextkeyをコード化するには、CTX_DOC.PKENCODE プロシージャを使用します。

  • ドキュメントを含む行のROWID。

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

restab

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

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

トークン表の指定

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

表9-2 トークン表に必要な列

列名 データ型 説明

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に挿入した行の識別に使用する識別子を指定します。

use_saved_copy

$D表を参照してドキュメントのコピーをフェッチするかどうかと、$D表でドキュメントのコピーが取得できないときにどんなアクションを実行するかを指定します。

use_saved_copyパラメータに指定できる値は、次のいずれかです。

  • CTX_DOC.SAVE_COPY_FALLBACK: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、データストアからドキュメントをフェッチします。

  • CTX_DOC.SAVE_COPY_ERROR: $D表からドキュメントのコピーをフェッチします。ドキュメントのコピーが$D表に存在しない場合は、エラー・メッセージを表示します。$D表でドキュメントのコピーが取得できないときに特定のフォールバック・ロジックを実装する場合には、この値を指定してください。

  • CTX_DOC.SAVE_COPY_IGNORE: ドキュメントを常にデータストアからフェッチします。

デフォルト値はCTX_DOC.SAVE_COPY_FALLBACKです。

インメモリー・トークン

次の例では、ドキュメント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;