これはPGroonga 2.X and 3.X用のドキュメントです。古いPGroongaを使っているならPGroonga 1.xのドキュメントを見てください。
&`
演算子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);
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"
を含んでいること(全文検索)
スクリプト中では関数を使うこともできます。
シーケンシャルスキャン時にはこの演算子を使うことはできません。