Masafumi Yokoyama
yokoy****@clear*****
2015年 5月 29日 (金) 14:50:35 JST
|今日は肉の日(5/29)ですね。Groonga 5.0.4をリリースしました! http://groonga.org/ja/docs/news.html#release-5-0-4 それぞれの環境毎のインストール方法はこちらを見てください。 http://groonga.org/ja/docs/install.html 今回のリリースの主なトピックは次の通りです。 * メーリングリストの投稿先が変わりました * インデックス更新中にクラッシュする不具合を修正 * 2文字以下の文字をTokenTrigramを使っていても検索できるようになりました * TokenRegexpで改行などが正しく検索できない不具合を修正(インデックスの再構築が必要) filter関係の機能を強化したり、まれにクラッシュする不具合が修正されているので アップグレードをおすすめします。 ## メーリングリストの投稿先が変わりました 5/11のSourceForge.JPのサイト名変更に伴い、メーリングリストの投稿先が変わりました。 旧: groon****@lists***** 新: groon****@lists***** 過去のメールを参照したいときのアーカイブのリンク先も変更になっています。 http://osdn.jp/projects/groonga/lists/archive/dev/ なお、当面の間は旧アドレスも使うことができます。詳細は以下のURLをご覧ください。 ニュース: サイト名称変更に伴うURL、ドメインの変更についてのお知らせ - OSDN運営・管理 - OSDN http://osdn.jp/projects/sourceforge/news/24923 ニュース: メーリングリスト移行の際の変更詳細 - OSDN運営・管理 - OSDN http://osdn.jp/projects/sourceforge/news/24941 ## インデックス更新/参照中にクラッシュする不具合を修正 複数のプロセスないしスレッドからインデックスを更新/参照しているときに、 まれに意図しないGroongaのクラッシュが発生する問題を修正しました。 条件によっては二重にメモリを開放してしまうことによるものです。 発生しにくいとはいえ、突然Groongaがクラッシュしてしまうことのないように アップグレードをおすすめします。 ## 2文字以下の文字をTokenTrigramを使っていても検索できるようになりました これまで、TokenBigramの場合には1文字のクエリであっても、検索できるように なっていました。(Groonga側でうまく検索できるようにしている) ただし、それらしい結果を返す仕組みはTokenBigramが前提で、TokenTrigramといった トークナイザーのことを考慮していませんでした。 今回のリリースでは、TokenTrigramを使っていても2文字以下のクエリで検索できるように なりました。 ## TokenRegexpで改行などが正しく検索できない不具合を修正(インデックスの再構築が必要) TokenRegexpトークナイザーで、クエリに空白として扱われる文字が含まれている 場合に正しく検索できない不具合を修正しました。典型的な例は改行 ("\n")が含 まれている場合です。例えば、今までは「abcd」が「ab\ncd」(\nは改行)にマッチ していたのですが、今後はマッチしなくなります。なお、この修正により、すでに TokenRegexpトークナイザーを使っている場合はインデックスの再構築が必要にな ります。 ## 変更点 その他の変更点は以下の通りです。 ### 改良 * [mruby] inspect を意味のあるわかりやすいエラーメッセージを表示するために使うようにしました。 * [mruby] バルクオブジェクトを調査するための Groonga::Bulk#inspect をサポートしました。 * [mruby] バルクオブジェクトからレコードの値を取得するための Bulk#value をサポートしました。 * [mruby] logical_range_filter で参照型のカラムの値が特定のレコードのIDにマッチする場合 (reference_column == record_id) を効率良く検索するために必要なマッチするレコード数を 見積もれるようになりました。 * [sub_filter] インデックスカラムを scope 引数に指定できるようになりました。 * [スクリプト構文] 数値に関する記述をよりわかりやすくしました。 [GitHub groonga/groonga.org#16] [佐藤さんが提案] * [select] Select対象でない他のテーブルのレコードをフィルタに指定できるようになりました。 --filter 'OTHER_TABLE[KEY].COLUMN' といったようにフィルタで指定できます。 * [select] テーブルのキーでオペレータを指定できるようになりました。 --filter 'OTHER_TABLE["SOME STRING" + "ANOTHER STRING"] というように キーを連結した文字列として指定することができます。 * [example] Ruby 2.0以降のAPIを辞書の変換スクリプトで使うようにしました。 * テーブルのキーの型が正しくないときにエラーメッセージを表示するようにしました。 * [doc] メーリングリストの案内ページへのリンクをsourceforge.jpからosdn.meやosdn.jpに修正しました。 * [tokenize] force_prefix を追加しました。[村上さんがパッチ提供] * 2文字以上のトークンに対しても前方一致検索を強制できるようにしました。 TokenBigramで1文字トークンであっても強制前方一致検索することでうまく検索できる仕組みを TokenTrigram等でも適用できるようになりました。 [GitHub#341] [村上さんがパッチ提供] * [deb] groonga-httpdとgroonga-server-gqtpのパッケージにSystemd用serviceファイルを追加しました。 ### 修正 * 空のキーが drilldown[label].keys に指定されるとクラッシュする不具合を修正しました。 * grn_parse_query_flags の返り値を適切にチェックしていないのを修正しました。 [GitHub#336] [Hiroaki Nakamuraさんが報告] * いくつかのBSD系でビルドエラーになる不具合を修正しました。sedに "-i" オプションがないためエラーになっていました。 * Solarisでビルドエラーになる不具合を修正しました。memset() にて sizeof(msghdr) だけ初期化するようにしました。これは Solarisでは msg_control や msg_controllen msg_flags、が存在しないためです。 * [トークナイザー] ドキュメントの誤字を修正しました。[GitHub#338] [佐藤さんが報告] * [出力] ドキュメントのマークアップを修正しました。 [GitHub groonga/groonga.org#17] [佐藤さんが報告] * grn_ii_cursor_set_min() を呼ぶごとに getenv()しないようにしました。 これによりWindows上でのパフォーマンスのリグレッションが解決します。 * OpenBSDでビルドエラーになる不具合を修正しました。 [groonga-dev,03255] [fbnteqrさんが報告] * [groonga-httpd] 同じメッセージが重複してログに記録される不具合を修正しました。 * 二重にメモリを開放することでクラッシュする不具合を修正しました。 * メモリリークを修正しました。 --match_columns と --query にインデックスを 張っていないテキストカラムを指定し、そのテキストカラムの内容がバルクオブジェクトに収まりきらないと発生します。 バルクオブジェクトに収まりきらないのは32byteを越える場合です。 そのため、テキストがそれよりも短いものばかりならばこの不具合の影響を受けません。 * [トークナイザー] [TokenRegexp] クエリに空白として扱われる文字が含まれている場合に 正しく検索できない不具合を修正しました。典型的な例は改行 ("\n")が含まれている場合です。 この修正により、インデックスの再構築が必要です。 ### 感謝 * Hiroaki Nakamuraさん * 佐藤さん * 村上さん * fbnteqrさん | -- 横山 昌史 <Masafumi Yokoyama> E-mail: yokoy****@clear***** 株式会社クリアコード 〒170-0005 東京都豊島区南大塚3-29-9 Tel: 03-5927-9440 Web: http://www.clear-code.com/ Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/