BloGroonga

2019-01-29

Groonga 8.1.1リリース

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

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

お知らせ

株式会社セナネットワークス様が、メーリングリスト(groonga-dev)と Groonga・Mroonga・PGroongaのサイトを検索するサービスを作ってくれました!

Sagroonga(さぐるんが)と言います。 PGroonga使って作ってあります。

Groonga・Mroonga・PGroongaのサイトの右上に検索ボックスをつけてあります。 その検索ボックスで検索すると、このSagroongaを使って検索するようになっています。

ぜひご活用ください!

変更内容

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

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

  • groonga実行ファイル 新しいオプション --log-flags を追加しました。

  • インデックスの更新エラー発生時にメモリリークする問題を修正しました。

  • ノーマライザー ステートレスなノーマライザーとステートフルなノーマライザーを同時に使用した時に、それらが誤った結果を返すバグを修正しました。

    • ステートレスなノーマライザーとは、以下です。

      • unify_kana
      • unify_kana_case
      • unify_kana_voiced_sound_mark
      • unify_hyphen
      • unify_prolonged_sound_mark
      • unify_hyphen_and_prolonged_sound_mark
      • unify_middle_dot
    • ステートフルなノーマライザーとは、以下です。

      • unify_katakana_v_sounds
      • unify_katakana_bu_sound
      • unify_to_romaji

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

logical_select の結果を --load_table で指定したテーブルへ格納できます。

--load_values オプションは、 logical_select の結果のカラムを指定します。

--load_columns オプションは、 --load_table で指定したテーブルのカラムを指定します。

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

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

table_create Logs_20150203 TABLE_HASH_KEY ShortText
column_create Logs_20150203 timestamp COLUMN_SCALAR Time

table_create Logs_20150204 TABLE_HASH_KEY ShortText
column_create Logs_20150204 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"
}
]

load --table Logs_20150204
[
{
  "_key": "2015-02-04:1",
  "timestamp": "2015-02-04 00:00:00"
}
]

logical_select \
  --logical_table Logs \
  --shard_key timestamp \
  --load_table Logs \
  --load_columns "original_id, timestamp_text" \
  --load_values "_id, timestamp"
[
  [
    0,
    0.0,
    0.0
  ],
  [
    [
      [
        3
      ],
      [
        [
          "_id",
          "UInt32"
        ],
        [
          "_key",
          "ShortText"
        ],
        [
          "timestamp",
          "Time"
        ]
      ],
      [
        1,
        "2015-02-03:1",
        1422928140.0
      ],
      [
        2,
        "2015-02-03:2",
        1422935340.0
      ],
      [
        1,
        "2015-02-04:1",
        1422975600.0
      ]
    ]
  ]
]
select --table Logs
[
  [
    0,
    0.0,
    0.0
  ],
  [
    [
      [
        3
      ],
      [
        [
          "_id",
          "UInt32"
        ],
        [
          "_key",
          "ShortText"
        ],
        [
          "original_id",
          "UInt32"
        ],
        [
          "timestamp_text",
          "ShortText"
        ]
      ],
      [
        1,
        "2015-02-03:1",
        1,
        "1422928140000000"
      ],
      [
        2,
        "2015-02-03:2",
        2,
        "1422935340000000"
      ],
      [
        3,
        "2015-02-04:1",
        1,
        "1422975600000000"
      ]
    ]
  ]
]

groonga実行ファイル 新しいオプション --log-flags を追加しました。

Groongaのログに出力する項目を指定できます。

以下のような項目を出力できます。

  • タイムスタンプ
  • ログメッセージ
  • ロケーション(ログが出力された場所)
  • プロセスID
  • スレッドID

以下のように接頭辞を指定できます。

  • +

    • この接頭辞は、"フラグを追加する"という意味です。
  • -

    • この接頭辞は、"フラグを削除する"という意味です。
  • 接頭辞無しは、"存在するフラグを置き換える"という意味です。

具体的には、以下のようにフラグを指定できます。

  • none

    • ログに何も出力しません。
  • time

    • ログにタイムスタンプを出力します。
  • message

    • ログにメッセージを出力します。
  • location

    • ログの出力場所(ファイル名、行数、関数名)とプロセスIDを出力します。
  • process_id

    • ログにプロセスIDを出力します。
  • pid

    • このフラグは、 process_id のエイリアスです。
  • thread_id

    • ログにスレッドIDをを出力します。
  • all

    • このフラグは、 nonedefault フラグ以外の全てのフラグを指定します。
  • default

    • ログにタイムスタンプとメッセージを出力します。

| を使って、複数のログフラグを指定することもできます。

例えば以下のように、プロセスIDとスレッドIDを追加で出力できます。

実行コマンド
% groonga --log-path groonga.log --log-flags "+pid|+thread_id" db/test.db

結果のフォーマット
Timestamp|Log level|process id|thread id: Log message

結果
2019-01-29 08:53:03.587000|n|2344|3228: grn_init: <8.1.1-xx-xxxxxxxx>

さいごに

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

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