もっとgroongaを知ってもらおう!ということで週刊groongaをはじめました。毎週木曜にgroongaやmroonga、rroongaのトピックを投稿予定です。
いよいよ、gihyo.jpさんでgroongaの隔週更新連載が始まりました!!
第3回の記事も公開されたので、一読をおすすめします。
- 「第1回 全文検索エンジンgroongaを紹介します!」
- 「第2回 groongaをRuby On Railsでも使ってみた ~chikamap.comの事例から」
- 「第3回 すべてのMySQLユーザに高速な全文検索機能を! - mroongaの紹介」
連載は始まりましたが、利用事例をどんどん紹介していきたいです。(利用事例のストックが尽きたら終了してしまいます。)
groongaやmroonga、rroongaを実際に使っていて利用事例記事を書いてもいいよ、という人をまだまだ募集しています。
詳細はgroonga普及のための協力のお願いを参照してください。
はじめに
オープンソースのカラムストア機能付き全文検索エンジンgroongaを公開しています。
最新のバージョンは2013年4月29日にリリースした3.0.3です。
今回は、groongaに追加された(正確にはgroonga-normalizer-mysqlに追加された) NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark
について紹介します。
NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark
とは
NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark
とはgroongaで使えるノーマライザーのうちの1つです。
groongaにはプラグインの仕組みがあるので、後からノーマライザーを追加することができます。
以前、groongaでMySQL互換のノーマライザーを使うにはという記事を書きました。そのときは NormalizerMySQLGeneralCI
と NormalizerMySQLUnicodeCI
だけだったので、さらにもう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の基本的な動作を知るためのチュートリアルもあります。インストールしたら試してみてください。