これは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)

参考