これはPGroonga 2.X and 3.X用のドキュメントです。古いPGroongaを使っているならPGroonga 1.xのドキュメントを見てください。
!&^|
演算子2.2.1で追加。
!&^|
演算子はプレフィックスの配列を使って否定前方一致検索をします。配列の中の1つ以上のプレフィックスがマッチしたらそのレコードはマッチしなかったことになります。
column !&^| prefixes
column
は検索対象のカラムです。型はtext
型です。
prefixes
は検索したいプレフィックスの配列です。型はtext[]
型です。
この演算子はcolumn
の値がprefixes
中のどのプレフィックスからも始まっていなければtrue
を返します。
この演算子を使うには次のどれかの演算子クラスを指定する必要があります。
例に使うサンプルスキーマとデータは次の通りです。
CREATE TABLE tags (
name text PRIMARY KEY,
alias text
);
CREATE INDEX pgroonga_tag_alias_index ON tags
USING pgroonga (alias pgroonga_text_term_search_ops_v2);
INSERT INTO tags VALUES ('PostgreSQL', 'PG');
INSERT INTO tags VALUES ('Groonga', 'grn');
INSERT INTO tags VALUES ('PGroonga', 'pgrn');
INSERT INTO tags VALUES ('Mroonga', 'mrn');
!&^|
演算子でプレフィックスの配列を使った否定前方一致検索をできます。
SELECT * FROM tags WHERE alias !&^| ARRAY['pg', 'mrn'];
-- name | alias
-- ------------+-------
-- Groonga | grn
-- (1 row)