8.3 テーマのリスト、要旨およびテーマ・サマリーの取得
次の表では、テーマのリスト、要旨およびテーマ・サマリーについて説明します。
表8-1 テーマのリスト、要旨およびテーマ・サマリー
出力タイプ | 説明 |
---|---|
ドキュメントの主要概念のリスト。 各テーマは、単一のワード、単一の句または親テーマの階層リストになります。 |
|
ドキュメントの概要を最も適切に表すドキュメント内のテキスト。 |
|
ドキュメントの特定のテーマを最も適切に表すドキュメント内のテキスト。 |
テーマ、要旨およびテーマ・サマリーのリストを取得するには、CTX_DOC
パッケージのプロシージャを使用して、次のようにします。
-
主キーに加えて
ROWID
でもドキュメントを識別します。 -
パフォーマンス向上のため、結果をインメモリーに格納します。
8.3.1 テーマのリスト
テーマのリストは、ドキュメントの主要概念のリストです。テーマのリストを生成するには、CTX_DOC.THEMES
プロシージャを使用します。
次のインメモリー・テーマの例では、ドキュメント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;
次の例では、結果表のテーマを作成しています。
create table ctx_themes (query_id number, theme varchar2(2000), weight number);
この例では、リストの各要素が単一テーマであるテーマ・リストを取得しています。
begin ctx_doc.themes('newsindex','34','CTX_THEMES',1,full_themes => FALSE); end;
この例では、リストの各要素が親テーマの階層リストであるテーマ・リストを取得しています。
begin ctx_doc.themes('newsindex','34','CTX_THEMES',1,full_themes => TRUE); end;
8.3.2 要旨およびテーマ・サマリー
要旨は、ドキュメントの概要を最も適切に表すドキュメント内のテキストです。テーマ・サマリーは、ドキュメントの単一テーマを最も適切に表すドキュメント内のテキストです。
要旨およびテーマ・サマリーを生成するには、CTX_DOC.GIST
プロシージャを使用します。プロシージャのコール時に、要旨またはテーマ・サマリーのサイズを指定できます。
インメモリー要旨の例
次の例では、10個以内の段落のデフォルト・サイズでない全体の要旨を生成します。結果はCLOB
ロケータの中のメモリーに格納されます。使用後、コードは戻されたCLOB
ロケータの割当てを解除します。
declare gklob clob; amt number := 40; line varchar2(80); begin ctx_doc.gist('newsindex','34','gklob',1,glevel => 'P',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;
結果表の要旨の例
要旨表を作成するには、次を入力します。
create table ctx_gist (query_id number, pov varchar2(80), gist CLOB);
次の例では、ドキュメント34に対して、デフォルト・サイズの段落要旨を戻しています。
begin ctx_doc.gist('newsindex','34','CTX_GIST',1,'PARAGRAPH', pov =>'GENERIC'); end;
次の例では、10個の段落のデフォルト・サイズでない要旨を生成します。
begin ctx_doc.gist('newsindex','34','CTX_GIST',1,'PARAGRAPH', pov =>'GENERIC', numParagraphs => 10); end;
次の例では、段落数がドキュメントの合計段落数の10パーセントの要旨を生成します。
begin ctx_doc.gist('newsindex','34','CTX_GIST',1, 'PARAGRAPH', pov =>'GENERIC', maxPercent => 10); end;
テーマ・サマリーの例
次の例では、テキストキー34を持つドキュメントのテーマinsectsに対するテーマ・サマリーを戻します。デフォルト・サイズの要旨が戻ります。
begin ctx_doc.gist('newsindex','34','CTX_GIST',1, 'PARAGRAPH', pov => 'insects'); end;