これはPGroonga 2.X用のドキュメントです。古いPGroongaを使っているならPGroonga 1.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"ではABCはキーワードでDはキーワードではありません。-はNOT演算子です。

使い方

ANDのみの場合はすべての語がキーワードになります。

SELECT pgroonga_query_extract_keywords('Groonga PostgreSQL') AS query_extract_keywords;
--  query_extract_keywords 
-- ------------------------
--  {PostgreSQL,Groonga}
-- (1 row)

ORのみの場合はすべての語がキーワードになります。

SELECT pgroonga_query_extract_keywords('Groonga OR PostgreSQL') AS query_extract_keywords;
--  query_extract_keywords 
-- ------------------------
--  {PostgreSQL,Groonga}
-- (1 row)

カッコを使えます。

SELECT pgroonga_query_extract_keywords('Groonga (MySQL OR PostgreSQL)') AS query_extract_keywords;
--    query_extract_keywords   
-- ----------------------------
--  {Groonga,PostgreSQL,MySQL}
-- (1 row)

NOT条件の語はキーワードになりません。

SELECT pgroonga_query_extract_keywords('Groonga - MySQL PostgreSQL') AS query_extract_keywords;
--  query_extract_keywords 
-- ------------------------
--  {PostgreSQL,Groonga}
-- (1 row)

参考