これはPGroonga 2.X and 3.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
を返します。
この演算子を使うには次のどれかの演算子クラスを指定する必要があります。
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['Groonga 全文検索', 'PostgreSQL -PGroonga'];
-- id | content
-- ----+------------------------------------------------------------
-- 1 | PostgreSQLはリレーショナル・データベース管理システムです。
-- 2 | Groongaは日本語対応の高速な全文検索エンジンです。
-- (2 rows)
Groonga 全文検索
クエリーはid
が2
のレコードにマッチします。
PostgreSQL -PGroonga
クエリーはid
が1
のレコードにマッチします。