これは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
を返します。
この演算子を使うには次のどれかの演算子クラスを指定する必要があります。
pgroonga_text_term_search_ops_v2
:text
用
pgroonga_text_array_term_search_ops_v2
:text[]
用
pgroonga_varchar_term_search_ops_v2
:varchar
用
例に使うサンプルスキーマとデータは次の通りです。
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)