これはPGroonga 1.X用のドキュメントです。新しいPGroongaを使っているならPGroonga 2.xのドキュメントを見てください。
&@|
演算子1.2.1で追加。
1.2.1から&@>
は非推奨になりました。代わりに&@|
演算子を使ってください。
&@|
演算子はキーワードの配列で全文検索を実行します。1つ以上のキーワードが見つかった場合、そのレコードはマッチしたことになります。
column &@| keywords
column
は検索対象のカラムです。型はtext
型、text[]
型、varchar
型のどれかです。
keywords
は全文検索で使うキーワードの配列です。column
の型がtext
型かtext[]
型の場合は型はtext[]
型です。column
がvarchar
型の場合は型はvarchar[]
型です。
この演算子はkeywords
中の1つ以上のキーワードがcolumn
の中に含まれているとtrue
を返します。
この演算子を使うには次のどれかの演算子クラスを指定する必要があります。
pgroonga.text_full_text_search_ops_v2
:text
用
pgroonga.text_array_full_text_search_ops_v2
:text[]
用
pgroonga.varchar_full_text_search_ops_v2
:varchar
用
例に使うサンプルスキーマとデータは次の通りです。
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'
と同じです。