Horimoto Yasuhiro
horim****@clear*****
2018年 2月 9日 (金) 21:29:07 JST
堀本です。 今日は肉の日ですね! Groonga 8.0.0をリリースしました! メジャーバージョンアップです! メジャーバージョンアップですが、互換性は壊れていないので、安心してアップグレードしてください! http://groonga.org/ja/blog/2018/02/09/groonga-8.0.0.html 細かな変更点についてはニュースをご確認下さい。 http://groonga.org/ja/docs/news.html#release-8-0-0 それでは、8.0.0のリリースについて紹介します。 # 変更内容 主な変更点は以下の通りです。 * --drilldown_adjuster と --drilldowns[LABEL].adjuster を追加 しました。 * between between()の引数に境界値を指定しなくても動作するように しました。 * ハッシュテーブルのメモリリークを修正しました。 ## --drilldown_adjuster と --drilldowns[LABEL].adjuster を追加しました selectの引数に --drilldown_adjuster と --drilldowns[LABEL].adjuster を 追加しました。 drilldown結果に対して、 --adjuster と同様スコアの調整ができます。 以下のように使用します。 table_create Categories TABLE_PAT_KEY ShortText table_create Tags TABLE_PAT_KEY ShortText column_create Tags categories COLUMN_VECTOR|WITH_WEIGHT Categories table_create Memos TABLE_HASH_KEY ShortText column_create Memos tags COLUMN_VECTOR Tags column_create Categories tags_categories COLUMN_INDEX|WITH_WEIGHT \ Tags categories load --table Tags [ {"_key": "groonga", "categories": {"full-text-search": 100}}, {"_key": "mroonga", "categories": {"mysql": 100, "full-text-search": 80}}, {"_key": "ruby", "categories": {"language": 100}} ] load --table Memos [ { "_key": "Groonga is fast", "tags": ["groonga"] }, { "_key": "Mroonga is also fast", "tags": ["mroonga", "groonga"] }, { "_key": "Ruby is an object oriented script language", "tags": ["ruby"] } ] select Memos \ --limit 0 \ --output_columns _id \ --drilldown tags \ --drilldown_adjuster 'categories @ "full-text-search" * 2 + categories @ "mysql"' \ --drilldown_output_columns _key,_nsubrecs,_score [ [ 0, 0.0, 0.0 ], [ [ [ 3 ], [ [ "_id", "UInt32" ] ] ], [ [ 3 ], [ [ "_key", "ShortText" ], [ "_nsubrecs", "Int32" ], [ "_score", "Int32" ] ], [ "groonga", 2, 203 ], [ "mroonga", 1, 265 ], [ "ruby", 1, 0 ] ] ] ] 上記の例では、 categories に full-text-search か mysql を持つレコード のスコアを調整しています。 ## between()の引数に境界値を指定しなくても動作するようにしました between()は、最小値、最大値を含む/含まないを指定する引数を含めて5つの 引数が必要でしたが、 今回のリリースから、最小値、最大値を含む/含まない を指定しなくても使えるようになりました。 以下のように3つの引数で使うことができます。 3つの引数で使用した場合は、 最小値、最大値を含むものとして処理されます。 table_create Users TABLE_HASH_KEY ShortText column_create Users age COLUMN_SCALAR Int32 table_create Ages TABLE_PAT_KEY Int32 column_create Ages users_age COLUMN_INDEX Users age load --table Users [ {"_key": "alice", "age": 17}, {"_key": "bob", "age": 18}, {"_key": "calros", "age": 19}, {"_key": "dave", "age": 20}, {"_key": "eric", "age": 21} ] select Users --filter 'between(age, 18, 20)' [ [ 0, 0.0, 0.0 ], [ [ [ 3 ], [ [ "_id", "UInt32" ], [ "_key", "ShortText" ], [ "age", "Int32" ] ], [ 2, "bob", 18 ], [ 3, "calros", 19 ], [ 4, "dave", 20 ] ] ] ] ## ハッシュテーブルのメモリリークを修正しました この修正により、Windowsにおいて、クエリーを実行し続けるだけで、Groongaに 接続できなくなることがある現象を解消しています。 ## 改良 * --drilldown_adjuster と --drilldowns[LABEL].adjuster を追加 しました。 * between between()の引数に境界値を指定しなくても動作するように しました。[GitHub#685] ## 修正 * ハッシュテーブルのメモリリークを修正しました。[fuku1さんの報告] * 配列のメモリリークを修正しました。 * output_columns で結果の変化する関数を使っている時にキャッシュしない ようにしました。 * [Windows] WSASend が適切なエラーコードを返すようにしました。 ## 感謝 * fuku1さん