8.1 問合せ語句のハイライト表示
テキスト問合せアプリケーションでは、テキスト問合せの場合は問合せ語句をハイライト表示し、ABOUT問合せの場合はテーマをハイライト表示して、選択したドキュメントを表示できます。
ハイライト表示に関連する出力では、次の3タイプの出力を生成できます。
-
マークアップ形式のドキュメント
-
ドキュメントの問合せオフセット情報
-
ドキュメントのコンコーダンス(問合せ語句の出現箇所が前後のテキストとともに戻されます)
この項では、次の項目について説明します。
8.1.1 テキストのハイライト表示
テキストのハイライト表示の場合は、問合せを発行すると、その問合せを満たすドキュメント内のワードがハイライト表示されます。プレーン・テキストまたはHTMLもハイライト表示できます。
8.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バージョンに索引は不要です。
ノート:
SNIPPETは、結果セット・インタフェースを使用して生成することもできます。
関連項目:
CTX_QUERY.RESULT_SETの詳細は、『Oracle Textリファレンス』を参照
この項の内容は次のとおりです。
8.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ナビゲーションのマークアップ順序をカスタマイズできます。
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
8.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から取得した標準のプレーン・テキスト・マークアップのかわりに、(フォント・タイプや色を変えるなどして)ハイライト表示したバージョンのドキュメントを表示できます。
8.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.POLICY_SNIPPETおよびCTX_DOC.SNIPPETには、2つの新しい属性が含まれています。radiusでは各セグメントの概算の長さを指定し、max_lengthではすべてのセグメントの合計の長さの上限を設定します。