これはPGroonga 1.X用のドキュメントです。新しいPGroongaを使っているならPGroonga 2.xのドキュメントを見てください。
これらはPGroonga 4.0.0で削除されました。PGroonga 4.0.0以降では利用できません。
&`演算子1.2.1で追加。
&`演算子はスクリプト構文で書かれた検索条件で検索します。スクリプト構文は強力な構文です。全文検索、前方一致検索、範囲検索といった多くの演算ができます。
column &` script
columnは検索対象のカラムです。型はtext型、text[]型、varchar型のどれかです。
scriptは検索条件を指定するスクリプトです。columnがtext型またはtext[]の場合は型はtext型になります。columnがvarchar型の場合は型はvarchar型になります。
scriptの構文はスクリプト構文です。
この演算子を使うには次のどれかの演算子クラスを指定する必要があります。
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 (id, 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 &` 'id >= 2 && (content @ "全文検索" || content @ "MySQL")';
-- id | content
-- ----+---------------------------------------------------
-- 2 | Groongaは日本語対応の高速な全文検索エンジンです。
-- (1 row)
指定したスクリプト'id >= 2 && (content @ "全文検索" || content @ "MySQL")'は次のような意味です。
idは2以上(範囲検索)
contentは"全文検索"または"MySQL"を含んでいること(全文検索)
スクリプト中では関数を使うこともできます。
シーケンシャルスキャン時にはこの演算子を使うことはできません。