ヘッダーをスキップ
Oracle® Textアプリケーション開発者ガイド
11gリリース2 (11.2)
B61358-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

5 Oracle Textでのドキュメントの表示方法

この章では、ドキュメントの表示方法を説明します。次の項目について説明します。

5.1 問合せ語句のハイライト表示

Oracle Textの問合せアプリケーションでは、テキスト問合せの場合は問合せ語句をハイライト表示し、ABOUT問合せの場合はテーマをハイライト表示して、選択したドキュメントを表示できます。

ハイライト表示に関連する出力では、次の3タイプの出力を生成できます。

  • マークアップ形式のドキュメント

  • ドキュメントの問合せオフセット情報

  • ドキュメントのコンコーダンス(問合せ語句の出現箇所が前後のテキストとともに戻されます)

5.1.1 テキストのハイライト表示

テキストのハイライト表示の場合は、問合せを発行すると、その問合せを満たすドキュメント内のワードがハイライト表示されます。プレーン・テキストまたはHTMLもハイライト表示できます。

5.1.2 テーマのハイライト表示

ABOUT問合せの場合、CTX_DOCパッケージのプロシージャによって、ABOUT問合せを最も適切に表しているワードまたは句がハイライト表示またはマークアップされます。

5.1.3 CTX_DOCのハイライト表示プロシージャ

CTX_DOCには、次のハイライト表示プロシージャがあります。

  • CTX_DOC.MARKUPおよびCTX_DOC.POLICY_MARKUP

  • CTX_DOC.HIGHLIGHTおよびCTX_DOC.POLICY_HIGHLIGHT

  • CTX_DOC.SNIPPETおよびCTX_DOC.POLICY_SNIPPET

各プロシージャのPOLICYバージョンと非POLICYバージョンは等価ですが、POLICYバージョンに索引は不要です。

5.1.3.1 MARKUPプロシージャ

CTX_DOC.MARKUPおよびCTX_DOC.POLICY_MARKUPプロシージャは、ドキュメント参照と問合せを使用して、マークアップされたドキュメントを戻します。出力は、マークアップされたプレーン・テキストかマークアップされたHTMLのいずれかになります。たとえば、マークアップされたドキュメントを問合せ語句とともに山カッコで囲んで戻すか(<<<tansu>>>)、HTML形式で戻すか(<b>tansu</b>)を指定できます。

CTX_DOC.MARKUPおよびCTX_DOC.POLICY_MARKUPは等価ですが、CTX_DOC.POLICY_MARKUPに索引は不要です。

HTMLナビゲーションのマークアップ順序をカスタマイズできます。

5.1.3.1.1 CTX_DOC.MARKUP例

次の例は、付録A「CONTEXT問合せアプリケーション」で説明しているWebアプリケーションです。プロシージャshowDocはHTML文書および問合せを取得して、ハイライト表示されたマークアップを作成し(この場合、問合せ語句は赤で表示されます)、結果をメモリー内のバッファに出力します。次に、htp.printを使用して結果をブラウザに表示します。

procedure showDoc (p_id in varchar2, p_query in varchar2) is

 v_clob_selected   CLOB;
 v_read_amount     integer;
 v_read_offset     integer;
 v_buffer          varchar2(32767);
 v_query           varchar(2000);
 v_cursor          integer;

 begin
   htp.p('<html><title>HTML version with highlighted terms</title>');
   htp.p('<body bgcolor="#ffffff">');
   htp.p('<b>HTML version with highlighted terms</b>');

   begin
     ctx_doc.markup (index_name => 'idx_search_table',
                     textkey    => p_id,
                     text_query => p_query,
                     restab     => v_clob_selected,
                     starttag   => '<i><font color=red>',
                     endtag     => '</font></i>');

     v_read_amount := 32767;
     v_read_offset := 1;
     begin
      loop
        dbms_lob.read(v_clob_selected,v_read_amount,v_read_offset,v_buffer);
        htp.print(v_buffer);
        v_read_offset := v_read_offset + v_read_amount;
        v_read_amount := 32767;
      end loop;
     exception
      when no_data_found then
         null;
     end;

     exception
      when others then
        null; --showHTMLdoc(p_id);
   end;
end showDoc;
end;
/
show errors
set define on

関連項目:

CTX_DOC.MARKUPおよびCTX_DOC.POLICY_SNIPPETの詳細は、『Oracle Textリファレンス』を参照してください。

5.1.3.2 HIGHLIGHTプロシージャ

CTX_DOC.HIGHLIGHTおよびCTX_DOC.POLICY_HIGHLIGHTは、問合せとドキュメントを使用して、プレーン・テキスト形式またはHTML形式のいずれかで問合せのオフセット情報を戻します。このオフセット情報を使用すると、ドキュメント表示用の独自のカスタム・ルーチンを記述できます。

CTX_DOC.HIGHLIGHTおよびCTX_DOC.POLICY_HIGHLIGHTは等価ですが、CTX_DOC.POLICY_HIGHLIGHTに索引は不要です。

オフセット情報を使用すると、ドキュメントを任意のハイライト形式で表示できます。たとえば、CTX_DOC.MARKUPから取得する標準のプレーン・テキストのマークアップではなく、様々なフォント・タイプまたは色で、ドキュメントを表示できます。


関連項目

CTX_DOC.HIGHLIGHTおよびCTX_DOC.POLICY_HIGHLIGHTの詳細は、『Oracle Textリファレンス』を参照してください。

5.1.3.3 コンコーダンス

CTX_DOC.SNIPPETおよびCTX_DOC.POLICY_SNIPPETは、問合せ語句の出現箇所が前後のテキストとともに戻される、ドキュメントのコンコーダンスを生成します。ドキュメント全体が(問合せ語句のハイライト表示ありまたはなしで)戻されるのではなく、文脈がわかるように問合せ語句がテキスト断片で戻されるため、この結果はKWIC (Key Word in Context)とも呼ばれます。戻される断片内で問合せ語句がハイライト表示される方法を制御できます。

CTX_DOC.SNIPPETおよびCTX_DOC.POLICY_SNIPPETは等価ですが、CTX_DOC.POLICY_SNIPPETに索引は不要です。


関連項目:

CTX_DOC.SNIPPETおよびCTX_DOC.POLICY_SNIPPETの詳細は、『Oracle Textリファレンス』を参照してください。

5.2 テーマのリスト、要旨およびテーマ・サマリーの取得

次の表では、テーマのリスト、要旨およびテーマ・サマリーについて説明します。

表5-1 テーマのリスト、要旨およびテーマ・サマリー

出力タイプ 説明

テーマのリスト

ドキュメントの主要概念のリスト。

リストの各テーマが単一のワードまたは句である場合、あるいはリストの各テーマが親テーマの階層リストである場合は、テーマのリストを生成できます。

要旨

ドキュメントの概要を最も適切に表すドキュメント内のテキスト。

テーマ・サマリー

ドキュメントの特定のテーマを最も適切に表すドキュメント内のテキスト。


この出力を取得するには、提供されているCTX_DOCパッケージのプロシージャを使用します。このパッケージを使用すると、次の操作を実行できます。

  • 主キーに加えてROWIDでもドキュメントを識別します。

  • パフォーマンス向上のため、結果をメモリー内に格納します。

5.2.1 テーマのリスト

テーマのリストは、ドキュメントの主要概念のリストです。テーマのリストを生成するには、CTX_DOC.THEMESプロシージャを使用します。


関連項目:

CTX_DOC.THEMESのコマンド構文の詳細は、『Oracle Textリファレンス』を参照してください。

5.2.1.1 メモリー内テーマ

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

5.2.1.2 結果表のテーマ

テーマ表は、次のように作成します。

create table ctx_themes (query_id number, 
                         theme varchar2(2000), 
                         weight number);
5.2.1.2.1 単一テーマ

リストの各要素が単一テーマであるテーマ・リストを取得するには、次の文を入力します。

begin
ctx_doc.themes('newsindex','34','CTX_THEMES',1,full_themes => FALSE);
end;
5.2.1.2.2 全テーマ

リストの各要素が親テーマの階層リストであるテーマのリストを取得するには、次の文を入力します。

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

5.2.2 要旨およびテーマ・サマリー

要旨は、ドキュメントの概要を最も適切に表すドキュメント内のテキストです。テーマ・サマリーは、ドキュメントの単一テーマを最も適切に表すドキュメント内のテキストです。

要旨およびテーマ・サマリーを生成するには、CTX_DOC.GISTプロシージャを使用します。プロシージャのコール時に、要旨またはテーマ・サマリーのサイズを指定できます。


関連項目:

CTX_DOC.GISTのコマンド構文の詳細は、『Oracle Textリファレンス』を参照してください。

5.2.2.1 メモリー内要旨

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

5.2.2.2 結果表の要旨

要旨表は、次のように作成します。

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;

5.2.2.3 テーマ・サマリー

次の例では、テキストキー34を持つドキュメントのテーマinsectsに対するテーマ・サマリーを戻します。デフォルト・サイズの要旨が戻ります。

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

5.3 ドキュメントの表示方法およびハイライト表示

通常、問合せアプリケーションでは、問合せから戻されるドキュメントを表示できます。ユーザーがヒットリストからドキュメントを選択すると、アプリケーションはドキュメントを特定の形式で表示します。

Oracle Textでは、様々な方法でドキュメントを表示できます。たとえば、問合せ語句をハイライト表示してドキュメントを表示できます。ハイライト表示できる問合せ語句は、ワード問合せのワードまたは英語でのABOUT問合せのテーマのいずれかです。

また、PL/SQLパッケージCTX_DOCを使用して、ドキュメントから要旨(ドキュメントのサマリー)とテーマ情報を取得することもできます。

表5-2は、取得可能な出力と、各出力を取得するためのプロシージャを示しています。

表5-2 CTX_DOCの出力

出力 プロシージャ

プレーン・テキスト形式、ハイライト表示なし

CTX_DOC.FILTER

HTML形式のドキュメント、ハイライト表示なし

CTX_DOC.FILTER

ハイライト表示されたドキュメント、プレーン・テキスト形式

CTX_DOC.MARKUP

ハイライト表示されたドキュメント、HTML形式

CTX_DOC.MARKUP

プレーン・テキスト形式のハイライト・オフセット情報

CTX_DOC.HIGHLIGHT

HTML形式のハイライト・オフセット情報

CTX_DOC.HIGHLIGHT

ドキュメントのテーマ・サマリーと要旨

CTX_DOC.GIST

ドキュメントのテーマ・リスト

CTX_DOC.THEMES



関連項目:

『Oracle Textリファレンス』

図5-1に、次の項でハイライト表示、要旨作成およびテーマ抽出の対象とする元のドキュメントを示します。

図5-1ハイライト表示、要旨作成およびテーマ抽出のサンプル・ドキュメント

図5-1の説明は次にあります。
「図5-1 ハイライト表示、要旨作成およびテーマ抽出のサンプル・ドキュメント」の説明

5.3.1 ハイライト表示の例

図5-2は、図5-1のドキュメント内の問合せ語句petをハイライト表示した、問合せアプリケーションの画面です。この出力は、付録A「CONTEXT問合せアプリケーション」で説明するウィザードによって作成されたテキスト問合せアプリケーションを使用して作成されました。

図5-2 petがハイライト表示されたPet Magnetドキュメント

図5-2の説明は次にあります。
「図5-2 petがハイライト表示されたPet Magnetドキュメント」の説明

5.3.2 ドキュメントのテーマ・リストの例

図5-3は、図5-1に示したドキュメントのテーマ・リストを表示している問合せアプリケーションの画面です。この出力は、付録A「CONTEXT問合せアプリケーション」で説明するウィザードによって作成されたテキスト問合せアプリケーションを使用して作成されました。

図5-3 ドキュメントのテーマを表示する問合せアプリケーション

図5-3の説明は次にあります。
「図5-3 ドキュメントのテーマを表示する問合せアプリケーション」の説明

5.3.3 要旨の例

図5-4は、図5-1に示したドキュメントの要旨を表示している問合せアプリケーションの画面です。この出力は、付録A「CONTEXT問合せアプリケーション」で説明するウィザードによって作成されたテキスト問合せアプリケーションを使用して作成されました。

図5-4 ドキュメントの要旨を表示する問合せアプリケーション

図5-4の説明は次にあります。
「図5-4 ドキュメントの要旨を表示する問合せアプリケーション」の説明