インストール今回、データベースの肥大化解消のために非互換な変更がはいっています。その恩恵を受けるためにはデータベースのつくりなおしが必要です。これにともない、新しいGroongaで一度でもデータベースを開くと、古いGroongaではデータベースを開けなくなることに注意してください。データベースの肥大化を解消できるようになりました今回のリリースでは、データベースの肥大化を解消する仕組みが有効になりました。前にもそんなことを聞いた気がする人がいるかもしれないので、前回までの肥大化抑制のとりくみをおさらいしてみましょう。同じ値なら更新をスキップすることで、新たに領域を確保せず肥大化を抑制する仕組みでした。実験的な扱いで、使いたい人は明示的に設定を変更してくださいという扱いでした。3.1.2でGRN_JA_SKIP_SAME_VALUE_PUT=yesが標準にそれまで使いたい人がいたら使ってね、という扱いだったのを、必ず適用するようにしました。これは、3.1.0で導入して以降、効果が認められたための措置です。今回のリリースでは、可変長データの扱いを工夫することでデータベースの肥大化を解消できるようになりました。詳細については、「Groongaでの可変長データの管理方法」が図入りでわかりやすいです。Groongaでの可変長データの管理方法ただし、後方互換とするために、肥大化抑制の恩恵を受けるためにはデータベースを新しくつくりなおす必要があります。まとめると4.0.0以前のデータベースは4.0.1でもそのまま開けますただし4.0.1のデータベースは以前のGroongaでは開けませんデータベースを新しく作りなおすと肥大化抑制効果がありますということになります。実際に肥大化抑制効果をongaeshiさんが検証してくれた結果がこちらのグラフです。(このグラフもongaeshiさんが提供してくれました!ありがとうございます!)以前のデータベースをそのまま継続して使っているとどんどん肥大化していっていますが(4.0.0-72-continue)、データベースを新規につくりなおすと肥大化を抑制できていることがわかります。(4.0.0-72-new)重みつきベクターカラムをサポートしました今回のリリースでは、ベクターカラムにキーと値のペアを複数格納できるようになりました。これが重みつきベクターカラムです。ユーザーの属性をタグ付けするのに、これまでだと"どんな属性か"というのは以下のようにしてベクターカラムを使って複数のタグ付けすることができました。ShortTextただし、属性に偏りがある場合には、これだけでは不十分です。そのため属性に対応した重みは属性ごとに別のカラムを追加して重みを格納するなどの工夫が必要でした。Int32...重みつきベクターカラムをサポートしたことで、そういったカラムをひとつにまとめることができるようになりました。(カラム定義だと次のようなイメージ)カラム定義で、WITH_WEIGHTを使うのがポイントです。ShortTextこうすることで、次のようなキーと値のペアをベクターカラムに格納できるようになります。...}検索結果に対して重みを調整するadjusterオプションをサポートしました今回のリリースでは、selectコマンドのオプションとしてadjusterオプションをサポートしました。重みというと、これまででもmatch_columnでカラムに対する重みづけはできていたような、と思うかも知れません。どんな違いがあるのかというと次のとおりです。match_columnマッチしているカラムの検索結果に対して重みづけをすることができるadjusterカラムの特定のキーについて重みづけをすることができる。今回サポートされた重みつきベクターカラムとあわせて使うことで、よりきめこまかな検索を行うことができます。Groongaをよく使っている人をリストアップしたいといった場合考えてみましょう。使っている度合いを示す重みつきベクターカラムに格納しているとします。サンプルとして使うスキーマ定義は次の通りです。tagsサンプルデータを次のようにしてロードします。}]単に、"Groonga"を使っているというだけなら次のようにして"tags"カラムに"Groonga"を含むレコードを検索すればよさそうです。"Groonga"'しかし、欲しいのは使っている度合いに応じた結果です。そのためにadjusterオプションを次のようにして使います。10'adjusterに渡しているパラメータは次のようになっています。10'これは、'weight'カラムに"Groonga"というキーワードがあるものの重みを10倍にする、ということを意味します。そのため、重みを考慮したスコアの順に並びかえて結果を取得することができます。Groongaの重みが大きい"bob"が一番上になりました。["bob",511,["Groonga"],{"Groonga":50}],["carol",411,["Groonga","Mroonga"],{"Groonga":40,"Mroonga":30}],["alice",311,["Groonga","Mroonga"],{"Groonga":30,"Mroonga":20}]Groongaだけじゃなくて、Mroongaも使っている人を重視したいなら、adjusterに"Mroonga"を指定すれば目的の結果が得られます。10'Mroongaの重みが大きい"carol"が一番上になりました。2.1の下でリリースされています。