BloGroonga

2019-06-29

Groonga 9.0.4リリース

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

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

変更内容

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

  • 配列リテラルの複数要素をサポートしました。

  • ベクターの等価演算をサポートしました。

  • logical_range_filter 出力するクエリーログを追加しました。

  • grndb 新しいオプション --since を追加しました。

  • query default_operator を追加しました。

  • [optimizer] 複数のfilter条件と xxx.yyy=="keyword" のような条件を指定した際にエラーが発生するバグを修正しました。

  • GroongaのWindows用のパッケージ(VC++版)に不足していたライセンスファイルを追加しました。

  • GroongaのWindows用のパッケージ(VC++版)UCRTランタイムを追加しました。

  • window_function メモリリークを修正しました。

    • これは、複数のウインドウに対してソートキーを適用した際に発生します。

配列リテラルの複数要素をサポートしました。

以下のように filter 条件の中で複数要素を持った配列リテラルを使うことができます。

table_create Values TABLE_NO_KEY

column_create Values numbers COLUMN_VECTOR Int32

load --table Values
[
{"numbers": [2, 1, 3]},
{"numbers": [2, 3, 4]},
{"numbers": [8, 9, -1]}
]

select Values  \
  --filter 'numbers == [2, 3, 4]'  \
  --output_columns 'numbers'
[[0,0.0,0.0],[[[1],[["numbers","Int32"]],[[2,3,4]]]]]

ベクターの等価演算をサポートしました。

以下のようにベクターに対して等価演算を使うことができます。

table_create Values TABLE_NO_KEY

column_create Values numbers COLUMN_VECTOR Int32

load --table Values
[
{"numbers": [2, 1, 3]},
{"numbers": [2, 3, 4]},
{"numbers": [8, 9, -1]}
]

select Values  \
  --filter 'numbers == [2, 3, 4]'  \
  --output_columns 'numbers'
[[0,0.0,0.0],[[[1],[["numbers","Int32"]],[[2,3,4]]]]]

logical_range_filter 出力するクエリーログを追加しました。

logical_range_filter コマンドが、以下のタイミングでログを出力するようになります。

  • logical_range_filter によるフィルター後
  • logical_range_filter によるソート後
  • 動的カラム適用後
  • 結果出力後

この機能によって、このコマンドがどこまで完了したかを見ることができます。

grndb Added support new option --since

検査の範囲を指定できます。

更新時刻は ISO 8601形式か -3days や -2.5weeksといった -NUNIT 形式で指定します。

以下は –since オプションをISO 8601形式で指定する例です。

% grmdb check --since=2019-06-24T18:16:22 /var/lib/groonga/db/db

上記の例では 2019-06-24T18:16:22 以降に更新されたオブジェクトをチェックします。

以下は –since オプションを -NUNIT 形式で指定する例です。

% grmdb check --since=-7d /var/lib/groonga/db/db

上記の例では、直近7日で更新されたものがチェックされます。

grndb#since も参考にしてください。

query default_operatorを追加しました。

"keyword1 keyword2"時の演算子をカスタマイズできます。 デフォルトでは、"keyword1 keyword2"はAND演算です。

以下のように、"keyword1 keyword2"の演算子をAND以外に変更できます。

table_create Products TABLE_NO_KEY

column_create Products name COLUMN_SCALAR ShortText

load --table Products
[
["name"],
["Groonga"],
["Mroonga"],
["Rroonga"],
["PGroonga"],
["Ruby"],
["PostgreSQL"]
]

select \
  --table Products \
  --filter 'query("name", "Groonga Mroonga", {"default_operator": "OR"})'
[
  [
    0,
    0.0,
    0.0
  ],
  [
    [
      [
        3
      ],
      [
        [
          "_id",
          "UInt32"
        ],
        [
          "name",
          "ShortText"
        ]
      ],
      [
        1,
        "Groonga"
      ],
      [
        4,
        "PGroonga"
      ],
      [
        2,
        "Mroonga"
      ]
    ]
  ]
]

さいごに

9.0.3からの詳細な変更点は9.0.4リリース 2019-06-29を確認してください。

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