HAYASHI Kentaro
hayas****@clear*****
2014年 10月 29日 (水) 15:24:07 JST
林です。 今日は肉の日(10/29)ですね。 Mroonga 4.07をリリースしました。 http://mroonga.org/ja/docs/news.html#release-4-07 みなさんからのフィードバックをお待ちしています! ドキュメント: http://mroonga.org/ja/ インストールガイド: http://mroonga.org/ja/docs/install.html アップグレード方法: http://mroonga.org/ja/docs/upgrade.html 今回のリリースの主なトピックは以下の通りです。 * [朗報] MariaDBについにバンドルされました * [実験的] カラムの圧縮をサポートしました * [実験的] トークンフィルターをサポートしました * [告知] 来月11/29は全文検索エンジンGroongaを囲む夕べ5です! ○ [朗報] MariaDBについにバンドルされました これまでMroongaはMariaDBにバンドルされるかも、というのをいいつづけて MariaDBにバンドルされていないMroonga http://www.slideshare.net/kou/myna-201404 いましたが、つい先日MariaDBにマージされました。 http://bazaar.launchpad.net/~maria-captains/maria/10.0/revision/4426 まだマージされたばかりなので、あとはバンドルされたMariaDBの リリースを待つばかりです。 これでバンドルされるされるといいつつ、MariaDBがリリースされるたびに次のバージョンへと 見送りという悲しい状態だったのともおさらばです! MariaDBにバンドルされることで、MariaDB側からのフィードバックをもらうことができました。 今回の修正にはいくつかそのフィードバックが反映されています。 ○ [実験的] カラムの圧縮をサポートしました 今回のリリースではカラムの圧縮をサポートしました。 MroongaそのものというよりかはGroonga 4.0.7で追加された機能です。 http://mroonga.org/ja/docs/tutorial/storage.html#how-to-specify-groonga-s-column-flags これを使うと特定のカラムの内容を圧縮することができるようになります。 content TEXT COMMENT 'flags "COLUMN_SCALAR|COMPRESS_ZLIB"' content TEXT COMMENT 'flags "COLUMN_SCALAR|COMPRESS_LZ4"' 本文がとても長いテキストを格納していて、それを全文検索するようなケースに有効です。 圧縮方法にはZlibとLZ4をサポートしています。 ディスク容量を節約したいときにはZlibを、ディスク容量を節約したいけども処理速度を 重視したい場合にはLZ4を使うことをお勧めします。 ZlibサポートやLZ4サポートが有効かどうかはそれぞれのシステム変数がONになっているか確認してください。 それぞれ、次のようなクエリで確認できます。 SHOW GLOBAL VARIABLES LIKE 'mroonga_libgroonga_support_zlib'; SHOW GLOBAL VARIABLES LIKE 'mroonga_libgroonga_support_lz4'; ○ [実験的] トークンフィルターをサポートしました 今回のリリースではトークンフィルターをサポートしました。 これもGroonga 4.0.7に追加された機能をMroongaでも使えるようにしたものです。 http://mroonga.org/ja/docs/tutorial/storage.html#how-to-specify-the-token-filters 今回追加したトークンフィルターはTokenFilterStopWordとTokenFilterStemの2つです。 それぞれ、テーブルやカラムのコメントに指定します。 FULLTEXT INDEX (content) COMMENT 'token_filters "TokenFilterStem"' FULLTEXT INDEX (content) COMMENT 'token_filters "TokenFilterStopWord"' TokenFilterStemはステミングを有効にします。例えば、developで検索したときに、 developだけじゃなくて、developingやdevelopedなどにもヒットするようにできます。 TokenFilterStemを使うことで検索漏れを少なくできます。 もう一つのTokenFilterStopWordはストップワード機能を有効にします。 これを有効にすると、ストップワードを含むクエリで検索してもトークンが無視されるので まるで最初からストップワードを含んでいなかったかのように検索できます。 例えば次のような Hello andをフレーズ検索する場合でも、andがストップワードとして 登録されていれば、Helloで検索した結果が返ってきます。 SELECT * FROM memos WHERE MATCH (content) AGAINST ("+\"Hello and\"" IN BOOLEAN MODE); そのため、より自然な文章に近い入力をそのまま使って検索できるようになります。 実際にストップワード機能を使うには、語彙表を用意してストップワードを主キーとして登録します。 また、is_stop_wordカラムを作成し、データを登録するときにはtrueを指定してください。 CREATE TABLE terms ( term VARCHAR(64) NOT NULL PRIMARY KEY, is_stop_word BOOL NOT NULL ) Engine=Mroonga COMMENT='default_tokenizer "TokenBigram", token_filters "TokenFilterStopWord"' DEFAULT CHARSET=utf8; つまり、ストップワードを登録するには次のようなクエリを実行します。 INSERT INTO terms VALUES ("and", true); もし、特定のストップワードを無効にするには、データを削除するか、 is_stop_wordの値をfalseに変更します。 ○ [告知] 来月11/29は全文検索エンジンGroongaを囲む夕べ5です! 毎年恒例、年に1度のいい肉の日(11月29日)に「全文検索エンジンGroongaを囲む夕べ」を開催します! 会場は GMOインターネットさんの シナジーカフェ GMO Yoursをお借りすることができました。 時間は13:30 - 17:30です。 Groonga開発チームから今年のアップデート内容と今後の展望を聞いたり、 「サードパーティー」によるGroonga開発チーム以外が開発したツールやライブラリーの話を聞ける いい機会です。 もちろん、GroongaだけでなくMroongaの発表もあります。 MySQL/MariaDBを使っていて全文検索に興味があるひとはぜひご参加ください! 今回は休憩時間にGroongaビジネス無料相談コーナーや、検索エンジン自作入門サイン会も開催します! まずは、参加登録してください! http://groonga.doorkeeper.jp/events/15816 まだまだ発表者や協力者を募集しています。 自作ツールやライブラリーの作者さんはぜひこれを機会に発表してみませんか? ○ 変更点 4.06からの変更点は以下の通りです。 http://mroonga.org/ja/docs/news.html#release-4-07 改良 * [ストレージ] 非推奨である INSERT DELAYED をエラーとして扱うようにしました。 [GitHub#20] [MDEV#6837] [Elena Stepanovaさんが報告] * [ストレージ][mariadb10] ユニークインデックスを追加するときに重複がある場合、 適切なエラーメッセージを表示するようにしました。 [GitHub#19] [Elena Stepanovaさんが報告] * [cmake] 不要なコンパイラフラグのチェックメッセージを表示しないようにしました。 [GitHub#22] * トークンフィルターをテーブルもしくはインデックスのコメントに指定できるようにしました。 [GitHub#25] [村上さんがパッチ提供] * [mroonga_command] mroonga_commandを使うときにすでにGroongaのデータベースの有無を気にしなくてもよくなりました。 以前はMroongaを使ったテーブルが存在している必要がありました。 * [storage] テーブルのコメントにノーマライザーを指定できるようにしました。 [GitHub#27] [村上さんがパッチ提供] * [ストレージ] カラムの圧縮フラグをサポートしました。 (COMPRESS_LZ4, COMPRESS_ZLIB) [GitHub#32] [村上さんがパッチ提供] * mroonga_libgroonga_support_lz4 と mroonga_libgroonga_support_zlib システム変数を追加しました。 [GitHub#33,#34,#35] [村上さんがパッチ提供] * MySQL 5.1対応をやめました。 修正 ^^^^ * [ストレージ][mariadb10] 不適切なロックのせいでクラッシュする不具合を修正しました。 [GitHub#18] [Elena Stepanovaさんが報告] * [ストレージ] signed tinyintでオーバーフローしていた問題を修正しました。 [GitHub#29] * [doc] ノーマライザーに関するマークアップを修正しました。 [GitHub#32] [村上さんがパッチ提供] 感謝 ^^^^ * Elena Stepanovaさん * 村上さん -- HAYASHI Kentaro <hayas****@clear*****>