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

&^~演算子

1.2.1で追加。

概要

1.2.1からtext[]用の&^~>演算子は非推奨になりました。代わりに&^~演算子を使ってください。

&^~演算子は前方一致RK検索をします。RはRomaji(ローマ字)のRです。KはKatakana(カタカナ)のKです。

前方一致RK検索は日本語を検索するときに便利です。

前方一致RK検索は入力補完機能を実装するときに便利です。

構文

column &^~ prefix

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

prefixは含まれているべきプレフィックスです。text型です。

columnの値はカタカナにします。prefixはローマ字かひらがなかカタカナにします。

columnの値がprefixから始まっていればtrueを返します。

演算子クラス

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

使い方

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

CREATE TABLE tag_readings (
  name text,
  katakana text,
  PRIMARY KEY (name, katakana)
);

CREATE INDEX pgroonga_tag_reading_katakana_index ON tag_readings
  USING pgroonga (katakana pgroonga_text_term_search_ops_v2);
INSERT INTO tag_readings VALUES ('PostgreSQL', 'ポストグレスキューエル');
INSERT INTO tag_readings VALUES ('PostgreSQL', 'ポスグレ');
INSERT INTO tag_readings VALUES ('Groonga',    'グルンガ');
INSERT INTO tag_readings VALUES ('PGroonga',   'ピージールンガ');
INSERT INTO tag_readings VALUES ('pglogical',  'ピージーロジカル');

&^~演算子を使うとローマ字でプレフィックスを指定して前方一致RK検索を実行できます。

SELECT * FROM tag_readings WHERE katakana &^~ 'pi-ji-';
--    name    |     katakana     
-- -----------+------------------
--  PGroonga  | ピージールンガ
--  pglogical | ピージーロジカル
-- (2 rows)

プレフィックスにひらがなを使うこともできます。

SELECT * FROM tag_readings WHERE katakana &^~ 'ぴーじー';
--    name    |     katakana     
-- -----------+------------------
--  PGroonga  | ピージールンガ
--  pglogical | ピージーロジカル
-- (2 rows)

プレフィックスにカタカナを使うこともできます。

SELECT * FROM tag_readings WHERE katakana &^~ 'ピージー';
--    name    |     katakana     
-- -----------+------------------
--  PGroonga  | ピージールンガ
--  pglogical | ピージーロジカル
-- (2 rows)

参考