Groonga 7.1.0リリース
今日は肉の日ですね!
Groonga 7.1.0をリリースしました!
それぞれの環境毎のインストール方法: インストール
変更内容
主な変更点は以下の通りです。
-
load
のクエリーログのフォーマットを改良しました。 -
logical_count
のクエリーログのフォーマットを改良しました。 -
logical_select
のクエリーログのフォーマットを改良しました。 -
delete
のクエリーログのフォーマットを改良しました。 -
ドリルダウンでベクター型のカラムをサポートしました。
-
grn_bulk_*()
APIにおいて、realloc()
が呼ばれる回数を削減しました。 -
関数
index_column_source_records
を新規に追加しました。インデックスカラムのソースを取得することができます。
load
のクエリーログのフォーマットを改良しました。
load
のクエリーログに以下の情報が表示されるようになります。
- ロードしたレコード数
- ロードがエラーになったレコードとカラムの数
- 総レコード数
具体的には、以下のように表示されます。
2017-12-29 15:23:47.049299|0x7ffe8af29a50|:000000001209848 load(3): [1][2][3]
2017-12-29 15:23:47.049311|0x7ffe8af29a50|<000000001221494 rc=-22
load
直後の()
の中の数字は、ロードしたレコード数、1番目の[]
の中の数字は、ロードに失敗したレコード数、2番目の[]
の中の数字はロードに失敗したカラム数、3番目の[]
の中の数字は、総レコード数を表します。
logical_count
のクエリーログのフォーマットを改良しました
logical_count
のクエリーログに以下の情報が表示されるようになります。
- 検索にマッチしたレコード数
具体的には、以下のように表示されます。
2017-12-29 15:25:06.068077|0x7fffedde8460|:000000001276405 count(2)
2017-12-29 15:25:06.068107|0x7fffedde8460|<000000001305264 rc=0
count
直後の()
の中の数字が、検索にマッチしたレコード数を表します。
logical_select
のクエリーログのフォーマットを改良しました
logical_select
のクエリーログに以下の情報が表示されるようになります。
- 検索にマッチしたレコード数
- ドリルダウンした数
- ラベルつきのドリルダウンをした数
具体的には、以下のように表示されます。
2017-12-29 15:19:53.703472|0x7ffe0ce4e650|:000000001372833 filter(1)
2017-12-29 15:19:53.703499|0x7ffe0ce4e650|:000000001397623 select(1)[Logs_20170315]
2017-12-29 15:19:53.703796|0x7ffe0ce4e650|:000000001695440 filter(2)
2017-12-29 15:19:53.703813|0x7ffe0ce4e650|:000000001711123 select(2)[Logs_20170316]
2017-12-29 15:19:53.704024|0x7ffe0ce4e650|:000000001923225 filter(2)
2017-12-29 15:19:53.704040|0x7ffe0ce4e650|:000000001937931 select(2)[Logs_20170317]
2017-12-29 15:19:53.704198|0x7ffe0ce4e650|:000000002096788 output(5)
2017-12-29 15:19:53.704354|0x7ffe0ce4e650|<000000002253133 rc=0
select
直後の()
の中の数字は、実行されるクエリーによって、検索にマッチしたレコード数、ドリルダウン結果のレコード数、ラベル付きドリルダウンした結果のレコード数を表します。
また、シャード毎に結果を表示するようになっています。
上記例では、3つのシャードが存在するので、selectが3つ出力されています。
末尾の[]
は、検索したテーブル名が表示されます。
delete
のクエリーログのフォーマットを改良しました
delete
のクエリーログに以下の情報が表示されるようになります。
- 削除したレコード数と削除に失敗したレコード数
- 削除後に残ったレコード数
具体的には、以下のように表示されます。
2017-12-29 15:27:30.002184|0x7fff769b2340|:000000032051813 delete(2): [0][1]
2017-12-29 15:27:30.002196|0x7fff769b2340|<000000032062599 rc=0
delete
直後の()
の中の数字は、削除した件数、1番目の[]
の中の数字は、削除に失敗した件数、2番目の[]
の中の数字は、delete
コマンドを実行した結果、残ったレコード数を表します。
ドリルダウンでベクター型のカラムをサポートしました
ベクター型のカラムに対して、ドリルダウンできるようになります。
以下のように drilldown_calc_target
にベクターカラムを指定して、ベクターカラムの要素の中で
最小の値や最大の値、合計値、平均値等を出力できるようになっています。
table_create Tags TABLE_PAT_KEY ShortText
table_create Memos TABLE_HASH_KEY ShortText
column_create Memos tag COLUMN_SCALAR Tags
column_create Memos scores COLUMN_VECTOR Int64
load --table Memos
[
{"_key": "Groonga1", "tag": "Groonga", "scores": [10, 29]},
{"_key": "Groonga2", "tag": "Groonga", "scores": [20]},
{"_key": "Groonga3", "tag": "Groonga", "scores": [60, 71]},
{"_key": "Mroonga1", "tag": "Mroonga", "scores": [61, 62, 63]},
{"_key": "Mroonga2", "tag": "Mroonga", "scores": [24, 20, 16]},
{"_key": "Mroonga3", "tag": "Mroonga", "scores": [8, 5, 2]},
{"_key": "Rroonga1", "tag": "Rroonga", "scores": [3]},
{"_key": "Rroonga2", "tag": "Rroonga", "scores": [-9, 0, 9]},
{"_key": "Rroonga3", "tag": "Rroonga", "scores": [0]}
]
上記のようなテーブルに対して、以下のクエリーを発行すると、tag
にGroonga
を持つレコード、tag
にMroonga
を持つレコード、tag
にRroonga
を持つレコードのscores
カラムの中から最小値、最大値、scores
カラムの各要素を合計した値、scores
カラムの要素の平均値を計算し出力します。
select Memos \
--limit 0 \
--drilldowns[tag].keys tag \
--drilldowns[tag].calc_types 'MAX, MIN, SUM, AVG' \
--drilldowns[tag].calc_target scores \
--drilldowns[tag].output_columns _key,_max,_min,_sum,_avg
したがって、上記のクエリーの結果はそれぞれ以下のようになります。(説明に不要な部分は一部割愛して記載しています。) 左から_key
, _max
、_min
、_sum
、_avg
の値となります。
["Groonga", 71, 10, 190, 38.0],
["Mroonga", 63, 2, 261, 29.0],
["Rroonga", 9, -1, 3, 0.6],
grn_bulk_*()
APIにおいて、 realloc()
が呼ばれる回数を削減しました。
クエリーの実行結果表示の際に、応答サイズが大きいとWindows版のみ表示速度が遅くなる現象を改善しました。 この変更によって、Windows版においてクエリーの実行結果表示のパフォーマンスが向上します。 例えば、出力が100MBを超える場合には、約100倍速くなります。
関数 index_column_source_records
を新規に追加しました
この関数を使って、以下のようにインデックスカラムのソースを取得することができます。
plugin_register functions/index_column
table_create Memos TABLE_HASH_KEY ShortText
table_create Terms TABLE_PAT_KEY ShortText \
--default_tokenizer TokenBigram \
--normalizer NormalizerAuto
column_create Terms index COLUMN_INDEX|WITH_POSITION Memos _key
load --table Memos
[
{"_key": "Groonga is a fast full text search engine."},
{"_key": "Mroonga is a MySQL storage engine based on Groonga."},
{"_key": "Rroonga is a Ruby bindings for Groonga."}
]
上記のようなテーブルに対して、以下のクエリーを発行すると、Terms
テーブルに登録されているトークンが出現するレコードを表示できます。
select Terms \
--limit -1 \
--sort_keys _id \
--columns[index_records].stage output \
--columns[index_records].type Memos \
--columns[index_records].flags COLUMN_VECTOR \
--columns[index_records].value 'index_column_source_records("index")' \
--output_columns '_id, _key, index_records'
上記のクエリーの結果はそれぞれ以下のようになります。(説明に不要な部分は一部割愛して記載しています。) 一番右の値が、index_column_source_records
の結果となります。
[ 1, "groonga", [ "Groonga is a fast full text search engine.", "Mroonga is a MySQL storage engine based on Groonga.", "Rroonga is a Ruby bindings for Groonga." ] ],
[ 2, "is", [ "Groonga is a fast full text search engine.", "Mroonga is a MySQL storage engine based on Groonga.", "Rroonga is a Ruby bindings for Groonga." ] ],
(省略)
さいごに
7.0.9からの詳細な変更点は7.1.0リリース 2017-12-29を確認してください。
それでは、Groongaでガンガン検索してください!