BloGroonga

2019-03-29

Groonga 9.0.1リリース

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

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

変更内容

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

  • select 新しい引数 --load_table--load_columns--load_values を追加しました。

  • 壊れたインデックスをチェックする index_column_diff コマンドを追加しました。(この機能は検証中です)

  • インデックスが正常に更新されないことによって、削除したレコードがマッチすることがあるバグを修正しました。

    • 大量のレコードを追加や削除した時に発生することがあります。
  • logical_range_filter がレコードを返さない時のメモリリークを修正しました。

  • ロードしたデータが正しくノーマライズされない事によって、クエリーにマッチしなくなるバグを修正しました。

    • このバグは、カタカナの後ろに空白を含むデータをロードし、normalizerに unify_kana オプションを使用していると発生します。
  • インデックスの更新中にインデックスが破損するバグを修正しました。

    • 大量のレコードを長期間、繰り返し追加、または削除していると発生することがあります。
  • インデックスを更新する際、作業領域が十分ではなくクラッシュするバグを修正しました。

select 新しい引数 --load_table--load_columns--load_values を追加しました。

select の結果を --load_table で指定したテーブルへ格納できます。引数の説明は以下の通りです。

  • --load_table オプション: select の結果を格納するテーブルを指定します。
  • --load_values オプション: select の結果のカラムを指定します。
  • --load_columns オプション: --load_table で指定したテーブルのカラムを指定します。

このようにして、--load_values で指定したカラムの値を、 --load_columns で指定したカラムへ格納できます。

例えば以下のように、 --load_table で指定したLogsテーブルに select の結果の_idtimestamp を格納できます。

table_create Logs_20150203 TABLE_HASH_KEY ShortText
column_create Logs_20150203 timestamp COLUMN_SCALAR Time

table_create Logs TABLE_HASH_KEY ShortText
column_create Logs original_id COLUMN_SCALAR UInt32
column_create Logs timestamp_text COLUMN_SCALAR ShortText

load --table Logs_20150203
[
{
  "_key": "2015-02-03:1",
  "timestamp": "2015-02-03 10:49:00"
},
{
  "_key": "2015-02-03:2",
  "timestamp": "2015-02-03 12:49:00"
}
]

select \
  --table Logs_20150203 \
  --load_table Logs \
  --load_columns "original_id, timestamp_text" \
  --load_values "_id, timestamp"
[
  [
    0,
    0.0,
    0.0
  ],
  [
    [
      [
        2
      ],
      [
        [
          "_id",
          "UInt32"
        ],
        [
          "_key",
          "ShortText"
        ],
        [
          "timestamp",
          "Time"
        ]
      ],
      [
        1,
        "2015-02-03:1",
        1422928140.0
      ],
      [
        2,
        "2015-02-03:2",
        1422935340.0
      ]
    ]
  ]
]

select --table Logs
[
  [
    0,
    0.0,
    0.0
  ],
  [
    [
      [
        2
      ],
      [
        [
          "_id",
          "UInt32"
        ],
        [
          "_key",
          "ShortText"
        ],
        [
          "original_id",
          "UInt32"
        ],
        [
          "timestamp_text",
          "ShortText"
        ]
      ],
      [
        1,
        "2015-02-03:1",
        1,
        "1422928140000000"
      ],
      [
        2,
        "2015-02-03:2",
        2,
        "1422935340000000"
      ]
    ]
  ]
]

壊れたインデックスをチェックする index_column_diff コマンドを追加しました。(この機能は検証中です)

この機能は、まだ検証中ですが、このコマンドを使ってインデックスの破損をチェックできます。

このコマンドは、インデックスカラムの値と、インデックスのソースをトークナイズした値を比較し、差分を表示します。

このコマンドは以下のように使用します。

  • 第一引数に、対象のインデックスカラムを含むインデックステーブルの名前を指定します。
  • 第二引数に、対象のインデックスカラムを指定します。
index_column_diff index_table_name index_column_name

このコマンドの結果は、以下のように3つの項目があります。

  • token : この項目は、破損したトークンを表します。
  • remains : この項目は、意図せずインデックスに残っているポスティングリストを表します。
  • missings : この項目は、意図せずインデックスから削除されたポスティングリストを表します。

インデックスが正常な場合は、この項目は以下のように空の値を返します。

index_column_diff --table Term --name data_index
[[0,1553654816.796513,0.001804113388061523],[]]

さいごに

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

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