BloGroonga

2018-02-09

Groonga 8.0.0リリース

今日は肉の日ですね!

Groonga 8.0.0をリリースしました!

メジャーバージョンアップです! メジャーバージョンアップですが、互換性は壊れていないので、安心してアップグレードしてください!

それぞれの環境毎のインストール方法: インストール

変更内容

主な変更点は以下の通りです。

  • select --drilldown_adjuster--drilldowns[LABEL].adjusterをサポートしました。

  • between between()の引数に境界値を指定しなくても動作するようにしました。

  • ハッシュテーブルのメモリリークを修正しました。

select --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
      ]
    ]
  ]
]

上記の例では、categoriesfull-text-searchmysqlを持つレコードのスコアを調整しています。

between 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に接続できなくなることがある現象を解消しています。

さいごに

7.1.1からの詳細な変更点は8.0.0リリース 2018-02-09を確認してください。

それでは、Groongaでガンガン検索してください!