createdb dougigo
psql dougigo
CREATE EXTENSION pgroonga;
CREATE TABLE synonyms (
target text,
normalized text
);
CREATE INDEX pgroonga_synonyms_index ON synonyms
USING pgroonga (target pgroonga_text_term_search_ops_v2,
normalized);
INSERT INTO synonyms VALUES ('齊', '斉');
INSERT INTO synonyms VALUES ('斎', '斉');
INSERT INTO synonyms VALUES ('齋', '斉');
INSERT INTO synonyms VALUES ('髙', '高');
CREATE TABLE names (
name text
);
CREATE INDEX pgroonga_names_index
ON names
USING pgroonga (name pgroonga_text_full_text_search_ops_v2)
WITH (normalizers='
NormalizerNFKC130,
NormalizerTable(
"normalized", "${table:pgroonga_synonyms_index}.normalized",
"target", "target"
)
');
INSERT INTO names
(name)
VALUES ('斉藤さん'),('齊藤さん'),('斎藤さん'),('鈴木さん'),('田中さん'),('佐藤さん'),('高橋さん'),('髙橋さん');
select * from names where name &~ '\A斉';
-- name
-- ----------
-- 斉藤さん
-- (1 row)
select * from names where name &@~ '斉';
-- name
-- ----------
-- 斉藤さん
-- 齊藤さん
-- 斎藤さん
-- (3 rows)
pgroonga_text_full_text_search_ops_v2
じゃなくてpgroonga_text_regexp_ops_v2
を使うんですよ!それでもなんか動かないんですけど、PGroongaのバグな気がしますね。。。