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ナビゲーションのマークアップ順序をカスタマイズできます。
CTX_DOC.MARKUP例
次の例は、「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