これはPGroonga 1.X用のドキュメントです。新しいPGroongaを使っているならPGroonga 2.xのドキュメントを見てください。
pgroonga.highlight_html
関数1.0.7で追加。
pgroonga.highlight_html
関数は指定したテキスト中にある指定したキーワードを<span class="keyword">
と</span>
で囲みます。指定したテキスト中にある&
などのHTMLの特別な文字はエスケープされます。
この関数の構文は次の通りです。
text pgroonga.highlight_html(target, ARRAY[keyword1, keyword2, ...])
target
はハイライト対象のテキストです。型はtext
です。
キーワードは<span class="keyword">
と</span>
で囲まれています。target
中の<
、>
、&
、"
はHTMLエスケープされます。
pgroonga.highlight_html
はtarget
中のキーワードをマークアップします。型はtext
です。
キーワードは<span class="keyword">
と</span>
で囲まれます。target
中の<
、>
、&
、"
はHTMLエスケープされます。
少なくとも1つキーワードを指定しなければいけません。
SELECT pgroonga.highlight_html('PGroonga is a PostgreSQL extension.',
ARRAY['PostgreSQL']);
-- highlight_html
-- ------------------------------------------------------------------
-- PGroonga is a <span class="keyword">PostgreSQL</span> extension.
-- (1 row)
複数のキーワードを指定できます。
SELECT pgroonga.highlight_html('PGroonga is a PostgreSQL extension.',
ARRAY['Groonga', 'PostgreSQL']);
-- highlight_html
-- -----------------------------------------------------------------------------------------------
-- P<span class="keyword">Groonga</span> is a <span class="keyword">PostgreSQL</span> extension.
-- (1 row)
pgroonga.query_extract_keywords
関数を使うとクエリーからキーワードを抽出できます。
SELECT pgroonga.highlight_html('PGroonga is a PostgreSQL extension.',
pgroonga.query_extract_keywords('Groonga PostgreSQL -extension'));
-- highlight_html
-- -----------------------------------------------------------------------------------------------
-- P<span class="keyword">Groonga</span> is a <span class="keyword">PostgreSQL</span> extension.
-- (1 row)
HTMLの特別な文字は自動でエスケープされます。
SELECT pgroonga.highlight_html('<p>PGroonga is Groonga & PostgreSQL.</p>',
ARRAY['PostgreSQL']);
-- highlight_html
-- ---------------------------------------------------------------------------------------
-- <p>PGroonga is Groonga & <span class="keyword">PostgreSQL</span>.</p>
-- (1 row)
文字は正規化されます。
SELECT pgroonga.highlight_html('PGroonga + pglogical = replicatable!',
ARRAY['Pg']);
highlight_html
------------------------------------------------------------------------------------------------
<span class="keyword">PG</span>roonga + <span class="keyword">pg</span>logical = replicatable!
(1 row)
マルチバイト文字にも対応しています。
SELECT pgroonga.highlight_html('10㌖先にある100キログラムの米',
ARRAY['キロ']);
-- highlight_html
-- ---------------------------------------------------------------------------------------
-- 10<span class="keyword">㌖</span>先にある100<span class="keyword">キロ</span>グラムの米
-- (1 row)