これはPGroonga 2.X and 3.X用のドキュメントです。古いPGroongaを使っているならPGroonga 1.xのドキュメントを見てください。

&@|演算子

1.2.1で追加。

概要

1.2.1から&@>は非推奨になりました。代わりに&@|演算子を使ってください。

&@|演算子はキーワードの配列で全文検索を実行します。1つ以上のキーワードが見つかった場合、そのレコードはマッチしたことになります。

構文

column &@| keywords

columnは検索対象のカラムです。型はtext型、text[]型、varchar型のどれかです。

keywordsは全文検索で使うキーワードの配列です。columnの型がtext型かtext[]型の場合は型はtext[]型です。columnvarchar型の場合は型はvarchar[]型です。

この演算子はkeywords中の1つ以上のキーワードがcolumnの中に含まれているとtrueを返します。

演算子クラス

この演算子を使うには次のどれかの演算子クラスを指定する必要があります。

使い方

例に使うサンプルスキーマとデータは次の通りです。

CREATE TABLE memos (
  id integer,
  content text
);

CREATE INDEX pgroonga_content_index ON memos
  USING pgroonga (content pgroonga_text_full_text_search_ops_v2);
INSERT INTO memos VALUES (1, 'PostgreSQLはリレーショナル・データベース管理システムです。');
INSERT INTO memos VALUES (2, 'Groongaは日本語対応の高速な全文検索エンジンです。');
INSERT INTO memos VALUES (3, 'PGroongaはインデックスとしてGroongaを使うためのPostgreSQLの拡張機能です。');
INSERT INTO memos VALUES (4, 'groongaコマンドがあります。');

&@|演算子を使うと複数のキーワードで全文検索できます。

SELECT * FROM memos WHERE content &@| ARRAY['全文検索', 'データベース'];
--  id |                          content                           
-- ----+------------------------------------------------------------
--   1 | PostgreSQLはリレーショナル・データベース管理システムです。
--   2 | Groongaは日本語対応の高速な全文検索エンジンです。
-- (2 rows)

column &@| ARRAY['キーワード1', 'キーワード2']column &@~ 'キーワード1 OR キーワード2'と同じです。

参考