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

@>演算子

概要

PGroongaは@>演算子の検索をインデックスを使って高速に実現できます。

@>演算子は組み込みのPostgreSQLの演算子です。@>演算子は右辺の配列型の値が左辺の配列型の値のサブセットならtrueを返します。

構文

この演算子の構文は次の通りです。

column @> query

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

queryはクエリーとして使われます。columnと同じ型でなければいけません。

この演算子はquerycolumnの値のサブセットならtrueを返し、それ以外の時はfalseを返します。

演算子クラス

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

使い方

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

CREATE TABLE memos (
  tags text[]
);

CREATE INDEX pgroonga_memos_index
  ON memos
  USING pgroonga (tags pgroonga_text_array_term_search_ops_v2);

INSERT INTO memos VALUES (ARRAY['Groonga', 'PGroonga', 'PostgreSQL']);
INSERT INTO memos VALUES (ARRAY['Groonga', 'Mroonga', 'MySQL']);

シーケンシャルスキャンを無効にします。

SET enable_seqscan = off;

マッチする例は次の通りです。

SELECT * FROM memos WHERE tags @> ARRAY['Groonga', 'PGroonga'];
--              tags              
-- -------------------------------
--  {Groonga,PGroonga,PostgreSQL}
-- (1 row)

マッチしない例は次の通りです。

SELECT * FROM memos WHERE tags @> ARRAY['Mroonga', 'PGroonga'];
--  tags 
-- ------
-- (0 rows)