これはPGroonga 1.X用のドキュメントです。新しいPGroongaを使っているならPGroonga 2.xのドキュメントを見てください。
pgroonga.query_extract_keywords
関数1.0.7で追加。
pgroonga.query_extract_keywords
関数はクエリー構文を使っているテキストからキーワードを抽出します。クエリー構文は&@~
演算子や&@~|
演算子などで使われています。
クエリーからキーワードを抽出できるとpgroonga.snippet_html
関数やpgroonga.highlight_html
関数などを使いやすくなります。これらにはキーワードを引数として渡さなければいけません。通常、渡すキーワードはクエリー内のキーワードになります。
この関数の構文は次の通りです。
text[] pgroonga.query_extract_keywords(query)
query
はクエリー構文を使っているtext
型の値です。
pgroonga.query_extract_keywords
はキーワードの配列を返します。
AND条件とOR条件の検索語はキーワードになります。NOT条件の検索語はキーワードになりません。たとえば、"A (B OR C) - D"
ではA
とB
とC
はキーワードでD
はキーワードではありません。-
はNOT演算子です。
ANDのみの場合はすべての語がキーワードになります。
SELECT pgroonga.query_extract_keywords('Groonga PostgreSQL');
-- query_extract_keywords
-- ------------------------
-- {PostgreSQL,Groonga}
-- (1 row)
ORのみの場合はすべての語がキーワードになります。
SELECT pgroonga.query_extract_keywords('Groonga OR PostgreSQL');
-- query_extract_keywords
-- ------------------------
-- {PostgreSQL,Groonga}
-- (1 row)
カッコを使えます。
SELECT pgroonga.query_extract_keywords('Groonga (MySQL OR PostgreSQL)');
-- query_extract_keywords
-- ----------------------------
-- {Groonga,PostgreSQL,MySQL}
-- (1 row)
NOT条件の語はキーワードになりません。
SELECT pgroonga.query_extract_keywords('Groonga - MySQL PostgreSQL');
-- query_extract_keywords
-- ------------------------
-- {PostgreSQL,Groonga}
-- (1 row)