HAYASHI Kentaro
hayas****@clear*****
2013年 8月 29日 (木) 18:17:36 JST
林です。 今日は毎月恒例の肉の日ですね。 mroonga 3.07をリリースしました。 http://mroonga.org/ja/docs/news.html#release-3-07 mroongaはMySQL 5.1/5.5/5.6、MariaDB 5.3/5.5/10.0で利用できる全文検索 ・位置情報検索可能なストレージエンジンです。mroongaはTritonnの後継プロジェクトです。 # # 注意: mroonga 3.07のパッケージをリリースした後に、 # 「mroongaをアップグレード中に意図せずmroongaがアンインストールされてしまう」問題が # 発覚しました。現在対策中ですが、すでにパッケージをアップグレードしてこの問題に遭遇した場合 # 以下の手順で復旧することができます。 # # $ wget http://packages.groonga.org/tmp/fix-mroonga-3.07-upgrade.sh # $ ./fix-mroonga-3.07-upgrade.sh # # ご迷惑をおかけしてもうしわけありません。 # ドキュメント: http://mroonga.org/ja/ インストールガイド: http://mroonga.org/ja/docs/install.html みなさんからのフィードバックをお待ちしています! 古いバージョンからアップグレードする場合には、アップグレード手順に 注意が必要です。2.09以降であればデータベースの互換性があります。 古いバージョンからアップグレードするときの詳細情報については、 次のドキュメントを参照してください。 http://mroonga.org/ja/docs/install.html#upgrade-guide まずはじめに、「隔週連載groonga」の紹介です。 これまでも、MySQLで高速全文検索を実現するためのmroongaの利用事例 http://mroonga.org/ja/users/ を公式サイトで紹介してきましたが、 それとは別に、http://gihyo.jp/ にてgroonga関連ということで mroongaを含めた記事の連載を「隔週連載groonga」として続けています。 まだgroongaやmroongaを知らない人にもWebの連載記事を通じて知ってもらいたいというのが動機です。 現在第9回まで公開しています。(先月のリリースのあと第8回と第9回が公開されました。) * 第8回 CentOS6でのRPMパッケージを用いた MySQL 5.6 & mroonga & PHP 5.4 環境の作り方 http://gihyo.jp/dev/clip/01/groonga/0008 * 第9回 mroongaを広く使ってもらうために大事なこと - mroongaのパッケージング動向の紹介 http://gihyo.jp/dev/clip/01/groonga/0009 過去の記事(第1回から第7回)については隔週連載groongaのページを参照してください。 http://gihyo.jp/dev/clip/01/groonga 似たような動機で、毎週木曜にQiitaでのgroonga関連の情報提供も続けています。 mroongaのトピックはmroongaタグをつけているので、こちらも参考にどうぞ。 以下からmroonga関連のトピックの一覧を参照できます。 http://qiita.com/tags/mroonga 今回のリリースの主なトピックは以下の通りです。 * mroonga_escapeをサポート * MariaDB 10.0.4をサポート ○ mroonga_escapeをサポート 今回のリリースでは実験的にmroonga_escapeをサポートしました。 mroongaでは、特別な文字(+-><~*()"\:)を含む検索をしたいときなどにはクエリを 適切にエスケープしてあげる必要があります。 これは、mroongaがgroongaをベースにしたMySQLのストレージエンジンだから です。 mroongaは、MySQL -> mroonga -> groongaといくつかのレイヤで 構成されているので、特別扱いする文字が途中で解釈されるという点に 注意が必要です。そのあたりの話はQiitaに以前トピックを書きました。 mroongaで記号類を含むクエリのシンタックスエラーを回避する方法 http://qiita.com/groonga/items/0ae7f637525c7b5f2cb1 どの文字をどうやってエスケープすれば意図したクエリを実行できるのか というのはちょっとややこしい問題です。 例えば、「(仮)」というのを前方一致検索しようとしたら、クエリは 以下のようにエスケープしないといけません。 mysql> SELECT * FROM test_escape WHERE MATCH(content) AGAINST('\\(仮\\)*' IN BOOLEAN MODE); これを同じようにやってくれるのが、mroonga_escapeです。 今回は()をそのまま通常の文字として検索したいので、mroonga_escapeの第二引数に明示的 にエスケープしたい文字を指定します。 クエリはこんな感じになります。 mysql> SELECT * FROM test_escape WHERE MATCH(content) AGAINST(mroonga_escape('(仮)*', '()') IN BOOLEAN MODE); エスケープ対象がはっきり区別できるようになったので、クエリがよりわかり やすくなりました。 ○ MariaDB 10.0.4をサポート 今回のリリースでは、2013年8月16日にリリースされたばかりの MariaDB 10.0.4をサポートしました。 基本的にディストリビューションの提供するパッケージに追従しているので、 すぐに試せるのは現状Windows版のみとなっています。 (Fedora 19ではMariaDBが採用されていますが、そちらはMariaDB 5.5系です。) ただし、有志の方が独自にパッケージングしたリポジトリを公開してくれているので、 もしCentOS 6で試したいという場合にはwingリポジトリを利用されると良いでしょう。 wingリポジトリについては以下を参照してください。 http://sourceforge.jp/projects/groonga/lists/archive/dev/2013-July/001559.html ○ 変更点 3.06からの変更点は以下の通りです。 http://mroonga.org/ja/docs/news.html#release-3-07 改良 ^^^^ * BOOLEAN MODEのクエリで特別な文字をエスケープする mroonga_escape を追加しました。 [groonga-dev,01576] [田辺さんが提案] * ORDER BY LIMIT の最適化でWHERE句にVARCHARの等価比較がある場合をサポートしました。 * MariaDB 5.5.32 timestampをサポートしました。 * MariaDB 10.0.4をサポートしました。[WINGさんが報告] [yoku tsさんが報告] 修正 ^^^^ * [mariadb] Windowsでプラグインをインストールするときにクラッシュする不具合を修正しました。 * [ストレージモード][mysql55] インデックスを含むカラムの変更に失敗する不具合を修正しました。 [groonga-talk] [Changさんが報告] この不具合は例えば FULLTEXTINDEX (column1) が ALTER TABLE table1 CHANGE column1 column1 new_column_definition などとして変更された場合に影響します。 * [doc][ラッパーモード] ORDER BY LIMITの最適化の説明が不正確だったのを修正しました。 * [ストレージモード] インデックス化されていないVARCHARに対しては ORDERBY LIMITを無効にしました。 インデックスがないとCOLLATIONを正しく扱えないためです。 * MySQL 5.6.13で内部的に使っているフラグが未設定なことによりクラッシュする不具合を修正しました。 感謝 ^^^^ * 田辺公平さん * Changさん * WINGさん * yoku tsさん -- HAYASHI Kentaro <hayas****@clear*****>