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形式のカナ変換の対応してないじゃんか・・・。またやることが増えた。

ついでに。
拗音の直音化はどこまで頑張るべきなのかな・・・
あんまりやり過ぎると、「きゃりーぱみゅぱみゅ」→「カリーパムパム」になるんだよな。