textsearch_jaの正規化関数
textsearch_jaの正規化関数も結構頑張ってるなあ・・・
半角カナ→全角カナ変換だけでなく、NFD(Normalization Form Decomposition)形式の濁点カナ(「ウ゛」など)から、NFC(Normalization Form Composition)形式の濁点カナ(「ヴ」など)への変換も対応しているようだ。
kana=# SELECT * FROM table1; id | data ----+-------------------------------------------------- 1 | ウ゛ァウ゛ァウ゛ァアイウエオウ゛ァウ゛ァウ゛ァ 2 | ウ゛ァウ゛ァウ゛ァアイウエオウ゛ァウ゛ァウ゛ァ 3 | ウ゛ァウ゛ァウ゛ァアイヴエオウ゛ァウ゛ァウ゛ァ 4 | ウ゛ァウ゛ァウ゛ァアイウ゛エオウ゛ァウ゛ァウ゛ァ 5 | ウ゛ァウ゛ァウ゛ァアイヴエオウ゛ァウ゛ァウ゛ァ 6 | ウ゛ァウ゛ァウ゛ァあいうえおウ゛ァウ゛ァウ゛ァ 7 | ウ゛ァウ゛ァウ゛ァあいう゛えおウ゛ァウ゛ァウ゛ァ 8 | ウ゛ァウ゛ァウ゛ァほげほげほウ゛ァウ゛ァウ゛ァ (8 rows) kana=# SELECT id, ja_normalize(data) FROM table1; id | ja_normalize ----+------------------------------------ 1 | ヴァヴァヴァアイウエオヴァヴァヴァ 2 | ヴァヴァヴァアイウエオヴァヴァヴァ 3 | ヴァヴァヴァアイヴエオヴァヴァヴァ 4 | ヴァヴァヴァアイヴエオヴァヴァヴァ 5 | ヴァヴァヴァアイヴエオヴァヴァヴァ 6 | ヴァヴァヴァあいうえおヴァヴァヴァ 7 | ヴァヴァヴァあいヴえおヴァヴァヴァ 8 | ヴァヴァヴァほげほげほヴァヴァヴァ (8 rows) kana=# SELECT id, katakana(ja_normalize(data)) FROM table1; id | katakana ----+------------------------------------ 1 | ヴァヴァヴァアイウエオヴァヴァヴァ 2 | ヴァヴァヴァアイウエオヴァヴァヴァ 3 | ヴァヴァヴァアイヴエオヴァヴァヴァ 4 | ヴァヴァヴァアイヴエオヴァヴァヴァ 5 | ヴァヴァヴァアイヴエオヴァヴァヴァ 6 | ヴァヴァヴァアイウエオヴァヴァヴァ 7 | ヴァヴァヴァアイヴエオヴァヴァヴァ 8 | ヴァヴァヴァホゲホゲホヴァヴァヴァ (8 rows) kana=#
ntext用に自前で作成した正規化関数の違いは「ヴァ行」→「バ行」変換、一部の拗音・撥音の直音化、「ゐ」「ゑ」「を」対応くらいなものか。
てゆーか、自前の正規化関数ではNFD→NFC形式のカナ変換の対応してないじゃんか・・・。またやることが増えた。
ついでに。
拗音の直音化はどこまで頑張るべきなのかな・・・
あんまりやり過ぎると、「きゃりーぱみゅぱみゅ」→「カリーパムパム」になるんだよな。