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

&^|演算子

1.2.1で追加。

概要

&^|演算子はプレフィックスの配列を使って前方一致検索をします。配列の中の1つ以上のプレフィックスがマッチしたらそのレコードはマッチしたことになります。

前方一致検索は入力補完機能を実現する場合に便利です。

構文

column &^| prefixes

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

prefixesは検索したいプレフィックスの配列です。型はtext[]型です。

この演算子はcolumnの値がprefixes中の1つ以上のプレフィックスから始まっていれば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 
-- ------------+-------
--  PostgreSQL | PG
--  PGroonga   | pgrn
--  Mroonga    | mrn
-- (3 rows)

参考