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

&`演算子

1.2.1で追加。

概要

&`演算子はスクリプト構文で書かれた検索条件で検索します。スクリプト構文は強力な構文です。全文検索、前方一致検索、範囲検索といった多くの演算ができます。

構文

column &` script

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

scriptは検索条件を指定するスクリプトです。columntext型またはtext[]の場合は型はtext型になります。columnvarchar型の場合は型はvarchar型になります。

scriptの構文はスクリプト構文です。

演算子クラス

この演算子を使うには次のどれかの演算子クラスを指定する必要があります。

使い方

例に使うサンプルスキーマとデータは次の通りです。

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")'は次のような意味です。

スクリプト中では関数を使うこともできます。

シーケンシャルスキャン

シーケンシャルスキャン時にはこの演算子を使うことはできません。