LoginSignup
6
4

More than 5 years have passed since last update.

groongaに追加されたNormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMarkとは

Posted at

もっとgroongaを知ってもらおう!ということで週刊groongaをはじめました。毎週木曜にgroongaやmroonga、rroongaのトピックを投稿予定です。

いよいよ、gihyo.jpさんでgroongaの隔週更新連載が始まりました!!
第3回の記事も公開されたので、一読をおすすめします。

連載は始まりましたが、利用事例をどんどん紹介していきたいです。(利用事例のストックが尽きたら終了してしまいます。)
groongaやmroonga、rroongaを実際に使っていて利用事例記事を書いてもいいよ、という人をまだまだ募集しています。
詳細はgroonga普及のための協力のお願いを参照してください。

はじめに

オープンソースのカラムストア機能付き全文検索エンジンgroongaを公開しています。

最新のバージョンは2013年4月29日にリリースした3.0.3です。
今回は、groongaに追加された(正確にはgroonga-normalizer-mysqlに追加された) NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark について紹介します。

NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark とは

NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark とはgroongaで使えるノーマライザーのうちの1つです。

groongaにはプラグインの仕組みがあるので、後からノーマライザーを追加することができます。

以前、groongaでMySQL互換のノーマライザーを使うにはという記事を書きました。そのときは NormalizerMySQLGeneralCINormalizerMySQLUnicodeCI だけだったので、さらにもう1つノーマライザーが追加されたことになります。

groongaにノーマライザーを追加するには

まずは、groongaをインストールしてください。

インストール手順は各種ディストリビューション向けにドキュメントがあります。

追加のノーマライザーは groonga-normalizer-mysql というパッケージが用意されています。
例えば、Debian系であれば以下のようにしてインストールできます。

sudo apt-get install groonga-normalizer-mysql

また、パッケージのインストールが終わったら、追加のノーマライザーで記載されているように、ノーマライザーを事前に登録します。

登録するにはgroongaコマンドをコマンドラインから起動した後に、以下のようにregisterコマンドを実行します。

% groonga
> register normalizers/mysql
[[0,1368067202.26793,0.0129163265228271],true]

ノーマライザーを試すには

ノーマライザーのインストールが終わったら実際に試してみましょう。

groongaコマンドをコマンドラインから起動した状態であれば、 normalize コマンドでノーマライザーの挙動を確認することができます。

例えば、MySQL互換のノーマライザーに、NormalizerMySQLUnicodeCI があります。
このノーマライザーはMySQLでいうところの utf8_unicode_ci に相当します。

いくつか試してみましょう。

normalize NormalizerMySQLUnicodeCI "ブラック"
normalize NormalizerMySQLUnicodeCI "ふらつく"
normalize NormalizerMySQLUnicodeCI "バルス"
normalize NormalizerMySQLUnicodeCI "パルス"

この結果は以下のようになります。

[[0,1368069281.9754,8.82148742675781e-06],{"normalized":"ふらつく","types":[]}]
[[0,1368069281.97542,7.62939453125e-06],{"normalized":"ふらつく","types":[]}]
[[0,1368069281.97544,9.05990600585938e-06],{"normalized":"はるす","types":[]}]
[[0,1368069281.97545,7.62939453125e-06],{"normalized":"はるす","types":[]}]

「ブラック」と「ふらつく」、「バルス」と「パルス」で同じ結果となっていることがわかります。
ということは、全文検索したときにこれらは同一視されてしまうということです。

「ブラック」で検索しているのに、「ふらつく」がヒットしてしまったり、「パルス」で検索しているのに「バルス」がヒットしてしまうのでは困りものです。

そこで追加されたのが、 NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark というわけです。

このノーマライザーを使うと、濁音・半濁音・「ぁ」「ぃ」「ぅ」「ぇ」「ぉ」「っ」などは区別しつつ、カタカナとひらがなは同一視することができるようになります。

先程のサンプルを NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark で再度試してみましょう。

normalize NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark "ブラック"
normalize NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark "ふらつく"
normalize NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark "バルス"
normalize NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark "パルス"

この結果は以下のようになります。

[[0,1368069396.23875,1.33514404296875e-05],{"normalized":"ぶらっく","types":[]}]
[[0,1368069396.23877,1.04904174804688e-05],{"normalized":"ふらつく","types":[]}]
[[0,1368069396.23879,9.29832458496094e-06],{"normalized":"ばるす","types":[]}]
[[0,1368069396.2388,1.19209289550781e-05],{"normalized":"ぱるす","types":[]}]

今度は「ブラック」と「ふらつく」、「バルス」と「パルス」を区別できていることがわかります。

まとめ

今回はgroongaに追加された NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark について紹介しました。

groongaに興味を持ったなら、まずはインストールして試してみてください。

groongaの基本的な動作を知るためのチュートリアルもあります。インストールしたら試してみてください。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4