これはPGroonga 2.X and 3.X用のドキュメントです。古いPGroongaを使っているならPGroonga 1.xのドキュメントを見てください。
&^|
演算子1.2.1で追加。
&^|
演算子はプレフィックスの配列を使って前方一致検索をします。配列の中の1つ以上のプレフィックスがマッチしたらそのレコードはマッチしたことになります。
前方一致検索は入力補完機能を実現する場合に便利です。
column &^| prefixes
column
は検索対象のカラムです。型はtext
型かtext[]
型です。
prefixes
は検索したいプレフィックスの配列です。型はtext[]
型です。
この演算子はcolumn
の値がprefixes
中の1つ以上のプレフィックスから始まっていればtrue
を返します。
この演算子を使うには次のどれかの演算子クラスを指定する必要があります。
pgroonga_text_term_search_ops_v2
:text
用
pgroonga_text_array_term_search_ops_v2
:text[]
用
pgroonga_varchar_term_search_ops_v2
:varchar
用
例に使うサンプルスキーマとデータは次の通りです。
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)