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

Zurück zum Archiv-Index

Kouhei Sutou kou****@clear*****
2013年 6月 9日 (日) 13:35:48 JST


須藤です。

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 メーリングリストの案内
Zurück zum Archiv-Index