BloGroonga

2018-04-29

Groonga 8.0.2リリース

今月も肉の日がやってきましたので、Groonga 8.0.2をリリースしました!

今回のリリースでは、プログラミングせずにオプション指定だけでトークナイザーとノーマライザーを「定義」できるようになりました。表記揺れの多いソースを検索するのに役立ちます。

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

変更内容

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

  • [logical_range_filter] sort_keys オプションに対応しました。
  • 新しい関数 time_format() を追加しました。strftime と同じ書式で Time 型のカラムの内容を出力できます。
  • [tokenizers] トークナイザー TokenNgram を新たに追加しました。このトークナイザーは動作を動的に定義できます。
  • [normalizers] Unicode 10.0 用の Unicode NFKC に基づくノーマライザー NormalizerNFKC100 を追加しました。
  • [normalizers] ノーマライザーのうち NormalizerNFKC51NormalizerNFKC100 についてオプション指定に対応しました。ノーマライザーの動作を動的に変更できます。
  • [dump][schema] トークナイザーとノーマライザーのオプションの出力に対応しました。この結果、Grooga 8.0.1 およびそれより古いバージョンではGroonga 8.0.2以降のバージョンで出力されたdumpやschemaをインポートできず、対応していない機能である旨のエラーが出力されるようになります。

[logical_range_filter] sort_keys オプションへの対応

logical_range_filtersort_keys に対応しました。これはselectコマンドのsort_keysオプションに相当します。

このオプションは検索対象のシャードが 1 つだけの場合にのみ動作し、複数のシャードを検索対象にする場合は動作しないことに注意して下さい。 詳細はコマンドリファレンスを参照して下さい。

新しい関数 time_format() を追加

Time 型のカラムの出力形式を strftime と同じ書式で指定できるようになりました。

例えば、以下のコマンド列は _key カラムの内容を UNIX 秒表記と人間にも分かりやすい 2018-04-29T10:30:00 のような表記の両方で出力します:

select Timestamps --sortby _id --limit -1 --output_columns '_key, time_format(_key, "%Y-%m-%dT%H:%M:%S")'

[tokenizers] トークナイザー TokenNgram を新たに追加

新しいトークナイザー TokenNgram が追加されました。 このトークナイザーは、オプション指定で動作を動的に定義することができます。 オプションは TokenNgram("[オプション名 1]", [値 1], "[オプション名 2]", [値 2], ...) のような形式で指定します。 例:

table_create --name Terms --flags TABLE_PAT_KEY --key_type ShortText --default_tokenizer 'TokenNgram("n", 2, "loose_symbol", true)' --normalizer NormalizerAuto

[normalizers] 新たなノーマライザー NormalizerNFKC100 の追加

新しいノーマライザー NormalizerNFKC100 が追加されました。 これは Unicode 10.0 用の Unicode NFKC (Normalization Form Compatibility Composition) に基づく正規化を行う物です。

このノーマライザーと NormalizerNFKC51 はオプションの指定に対応しています。 詳細は次項を参照して下さい。

[normalizers] NormalizerNFKC51NormalizerNFKC100 のオプション指定に対応

ノーマライザーのうち NormalizerNFKC51NormalizerNFKC100 について、オプションで細かい挙動を動的に変更できるようになりました。 オプションは NormalizerNFKC100("[オプション名 1]", [値 1], "[オプション名 2]", [値 2], ...) のような形式で指定します。 例:

table_create --name Terms --flags TABLE_PAT_KEY --key_type ShortText --default_tokenizer TokenBigram --normalizer 'NormalizerNFKC100("unify_kana", true, "unify_kana_case", true)'

[dump][schema] トークナイザーとノーマライザーのオプションの出力に対応

dumpschema の両コマンドで、トークナイザー (TokenNgram) とノーマライザー (NormalizerNFKC51 および NormalizerNFKC100) のオプションの出力に対応しました。 例:

table_create Site TABLE_HASH_KEY ShortText
column_create Site title COLUMN_SCALAR ShortText

table_create Terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram --normalizer "NormalizerNFKC100(\"unify_kana\", true, \"unify_kana_case\", true)"

この変更の結果、これらのオプションの情報を含む dumpschema の結果は、Groonga 8.0.1 およびそれ以前のバージョンではインポートできなくなっています。

オプションが指定されていないトークナイザーやノーマライザーについては出力形式は旧バージョンから変わっていないため、上記のトークナイザーやノーマライザーの新機能を使っている場合にのみ注意が必要です。

さいごに

8.0.1からの詳細な変更点は8.0.2リリース 2018-04-29を確認してください。

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