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

&@~|演算子

1.2.2で追加。

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

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

概要

&@~|演算子はクエリーの配列で全文検索をします。1つ以上のクエリーがマッチすればそのレコードはマッチしたことになります。

クエリーの構文はWeb検索エンジンで使われている構文と似ています。たとえば、クエリーでキーワード1 OR キーワード2と書くとOR検索できます。

構文

column &@~| queries

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

queriesは全文検索するクエリーの配列です。columnの型がtext型またはtext[]型の場合は型はtext[]型です。columnの型がvarchar型の場合は型はvarchar[]型です。

qeuryではGroongaのクエリー構文を使います。

queries内の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['Groonga 全文検索', 'PostgreSQL -PGroonga'];
--  id |                          content                           
-- ----+------------------------------------------------------------
--   1 | PostgreSQLはリレーショナル・データベース管理システムです。
--   2 | Groongaは日本語対応の高速な全文検索エンジンです。
-- (2 rows)

Groonga 全文検索クエリーはid2のレコードにマッチします。

PostgreSQL -PGroongaクエリーはid1のレコードにマッチします。

参考