[groonga-dev,04584] [ANN] Groonga 8.0.0

Back to archive index

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さん




groonga-dev メーリングリストの案内
Back to archive index