[groonga-dev,01486] Re: groonga-normalizer-mysql が適用されない

Back to archive index

saki kashi saki.****@gmail*****
2013年 6月 11日 (火) 15:09:17 JST


磯部さん、林さん、須藤さん

お世話になっております、kashiharaです。
多数ご助言いただきまして、ありがとうございました。

結論から申しますと、皆様からいただきましたご助言のおかげで、
バイナリ版でもきちんと動くことが出来るようになりました。
ありがとうございます!

mroongaのconfigureのlogに  checking for groonga-normalizer-mysql... yes
ときちんと明示されており、
検証した結果、このような動作結果でした。

# /usr/local/mysql/bin/mysql
mysql>select mroonga_command('normalize NormalizerMySQLGeneralCI aABC') as
result\G
ERROR 1026 (HY000): unknown normalizer: <NormalizerMySQLGeneralCI>

mysql>use test
Database changed
mysql>select mroonga_command('normalize NormalizerMySQLGeneralCI aABC') as
result\G
ERROR 1026 (HY000): unknown normalizer: <NormalizerMySQLGeneralCI>

mysql>create table test_collate (
    -> id            int primary key auto_increment,
    -> note          text,
    -> val           varchar(4),
    -> FULLTEXT INDEX(val)
    -> ) engine=mroonga default charset utf8;
Query OK, 0 rows affected (0.04 sec)

mysql>select mroonga_command('normalize NormalizerMySQLGeneralCI aABC') as
result\G
*************************** 1. row ***************************
result: {"normalized":"AABC","types":[]}
1 row in set (0.00 sec)

mysql>select mroonga_command('normalize NormalizerMySQLGeneralCI aABC') as
result\G
*************************** 1. row ***************************
result: {"normalized":"AABC","types":[]}

mysql>select mroonga_command('normalize NormalizerMySQLUnicodeCI aABC') as
result\G
*************************** 1. row ***************************
result: {"normalized":"AABC","types":[]}

mysql>select mroonga_command('normalize
NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark aABC') as
result\G
*************************** 1. row ***************************
result: {"normalized":"AABC","types":[]}


以下の場合、動作確認コマンドが動かなかった為、groonga-normalizer-mysql-devel を入れた後も、
認識されないと勘違いをしてしまっておりました。
・DBを明示的に指定していない場合
・mroonga engineのテーブルを作成していない場合

このような場合、動作確認コマンドが動かないのは仕様でしょうか?

以上、よろしくお願いします。


2013年6月9日 13:35 Kouhei Sutou <kou****@clear*****>:

> 須藤です。
>
> In <CAA3x****@mail*****>
>   "[groonga-dev,01477] Re: groonga-normalizer-mysql が適用されない" on Thu, 6 Jun
> 2013 18:53:00 +0900,
>   saki kashi <saki.****@gmail*****> wrote:
>
> >>もし、うまく運用するようになったら、mroonga普及のために事例
> >>紹介に協力してくれるとうれしいです。
> >
> > 了解いたしました。こちら、問題なければ協力させていただきたいと思います。
>
> ありがとうございます!
>
> >>groonga-normalizer-mysql-develパッケージもインストールしてか
> >>らもう一度mroongaをビルドしてください!それでwarningがでなく
> >>なるはずです。
> >
> > こちらを実施したのですが、同様の現象のままでした。
> > 検証しましたところ、
> >
> > ■失敗したパターン
> > --with-mysql-source= mysql-5.5.30ソース
> > --with-mysql-config= mysql-5.5.30-linux2.6-x86_64バイナリのmysql_config
> >
> > ■成功したパターン
> > --with-mysql-source= mysql-5.5.30ソース
> > --with-mysql-config= mysql-5.5.30ソースをビルドしたmysql_config
>
> むむ、これに関してはmysql_configの場所は関係ないはずなんです。
> (ちゃんとした情報を返すmysql_configを指定してあれば、ですが。)
>
> mroongaのconfigureを実行した出力を見せてもらえませんか?
>
>   checking for groonga-normalizer-mysql... yes
>
> というようにgroonga-normalizer-mysqlを検出している行があるは
> ずです。これがyesになっていない(noになっている)と今回のよ
> うな現象がおきます。
>
> 仕組みを説明すると、↑がyesになっているとgroongaデータベース
> の初期化時に林さんが触れている「register normalizer/mysql」
> 相当のことをmroongaが「自動で」実行するようになります。そし
> て、この「register…」がgroonga-normalizer-mysqlを使うために
> 必要な処理なのです。
>
> ただし、↑がnoになっていると「register…」が実行されません。
> そのため、NormalizerMySQLGeneralCIを見つけられないという
> warningがでます。
>
> ということで、ちゃんとしたmysql_configを使っていれば
> mysql_configは関係なく、それよりもconfigure時に
> groonga-normalizer-mysqlを見つけられているかのほうが大事なの
> です。
>
> なので、
>
> > 当方バイナリ版を多く使用していたのでなんとか使用できないか試みてみたのですが、
> > プラグインのみをmysql-5.5.30-linux2.6-x86_64の下に配置しても、mroongaは動いているように見えますが、
> > 今回の該当部分が動かないようですね。
> > やはりmysqlはソースをビルドするパターンでないと正常に稼動せず、
> > バイナリ版は使用できないという認識でよろしいでしょうか?
>
> というわけではなく、バイナリ版でも使用できるはずなんです。
>
>
> と、これだけだとアレだなぁと思ったので、以下のように手元で試
> してみたらwarningなしで動きました。(MySQL 5.5.30じゃなくて
> 5.5.32なのはそっちのほうがダウンロードしやすかったからです。
> すみません。)
>
> MySQLサーバーを再起動して
> 確実にmroongaを再読み込みすれば解決するんじゃないかという気が
> します。
>
> 1. http://dev.mysql.com/downloads/mysql/5.5.html#downloads
>    から以下をダウンロード。
>
>    * MySQL-5.5.32-1.linux2.6.i386.rpm-bundle.tar ← 全部入りRPM
>    * mysql-5.5.32.tar.gz ← ソース
>
> 2. 以下のRPMをインストール
>
>    * MySQL-devel-5.5.32-1.linux2.6.x86_64.rpm
>    * MySQL-server-5.5.32-1.linux2.6.x86_64.rpm
>    * MySQL-client-5.5.32-1.linux2.6.x86_64.rpm
>
> 3. MySQLのソースを展開
>
>    % mkdir -p ~/build
>    % cd ~/build
>    % tar xvzf /tmp/mysql-5.5.32.tar.gz
>
> 4. mroongaをビルド
>
>    % cd ~/build
>    % wget http://packages.groonga.org/source/mroonga/mroonga-3.04.tar.gz
>    % tar xvzf mroonga-3.04.tar.gz
>    % cd mroonga-3.04
>    % ./configure --prefix=/tmp/local --with-mysql-source=../mysql-5.5.32
>    % make
>    % sudo make install
>
> 5. 確認
>
>    % sudo service mysql start
>    % mysql -u root
>    ...
>    mysql> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';
>    Query OK, 0 rows affected (0.00 sec)
>
>    mysql> CREATE FUNCTION mroonga_command RETURNS STRING SONAME
> 'ha_mroonga.so';
>    Query OK, 0 rows affected (0.00 sec)
>
>    mysql> CREATE DATABASE mroonga;
>    Query OK, 1 row affected (0.00 sec)
>
>    mysql> USE mroonga;
>    Database changed
>    mysql> create table test_collate (id int primary key auto_increment,
> note text, val varchar(4), fulltext index(val)) engine=mroonga default
> charset utf8;
>    Query OK, 0 rows affected (0.49 sec)
>
>    mysql> SHOW WARNINGS;
>    Empty set (0.00 sec)
>
> ↑でwarningなし。
>
>    mysql> select mroonga_command('normalize NormalizerMySQLGeneralCI
> ブラックふらつくバルスパルスaABCaABC') as result\G
>   *************************** 1. row ***************************
>   result: {"normalized":"ブラックふらつくバルスパルスAABCAABC","types":[]}
>   1 row in set (0.00 sec)
>
> ↑正規化もされている。
>
> --
> 須藤 功平 <kou****@clear*****>
> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)
>
> groongaサポート:
>   http://groonga.org/ja/support/
> パッチ採用はじめました:
>   http://www.clear-code.com/recruitment/
> コミットへのコメントサービスはじめました:
>   http://www.clear-code.com/services/commit-comment.html
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
>



groonga-dev メーリングリストの案内
Back to archive index