Groonga 10.0.6リリース
Groonga 10.0.6をリリースしました!
それぞれの環境毎のインストール方法: インストール
変更内容
主な変更点は以下の通りです。
-
logical_range_filter 大きなデータの検索プランを改善しました。
- 通常、
logical_range_filter
はlogical_select
より高速ですが、以下のケースでは、logical_select
より遅くなっていました。logical_range_filter
には要求されたレコード数をなかなか見つけられない場合にシーケンシャル検索からインデックス検索に切り替える機能があります。logical_range_filter
は通常、検索対象のレコード数が多い場合は、シーケンシャル検索を使います。-
上記の切り替えが発生した場合は、
logical_select
と検索処理がほぼ同じになります。そのため、大きなデータを対象とした検索では、上記のケースで、logical_range_filter
は、logical_select
の数倍遅くなります。なぜなら、logical_range_filter
は検索後にソートを実行するためです。- 今回のリリースから、大きなデータを検索する場合に、今までよりシーケンシャル検索が採用されやすくしました。
- これによって、
logical_select
と同等の処理になるケースが減少しlogical_range_filter
のパフォーマンスが改善します。
- 通常、
-
[httpd] バンドルしているnginxのバージョンを1.19.1に更新しました。
-
Debian GNU/Linux へのインストール方法を変更しました。
groonga-archive-keyring
の代わりにgroonga-apt-source
を使うように変更しました。-
lintian
コマンドが/etc/apt/sources.lists.d/
配下にファイルを置くパッケージはapt-source
を使うよう推奨しているためです。lintian
コマンドはパッケージングに共通のエラーをチェックするためのコマンドです。-
インストール方法についての詳細は、以下も参照してください。
-
logical_select
highlight_html
とhighlight_full
をサポートしました。 -
値を持たない配列を削除した時、そのレコードのIDを再利用するようにしました。
- 値を持たない配列を削除した場合、削除されたIDは再利用されません。
-
Groongaは大きなIDがあることによって、多くのストレージを使用します。大きなIDはそれだけで、多くのストレージを使うためです。
- 大きなIDは、例えば、Mroongaの
mroonga_operations
のように多くの追加と削除によって発生します。
- 大きなIDは、例えば、Mroongaの
-
select インデックスを設定していない全文検索のパフォーマンスを改善しました。
-
関数 全ての引数が他のテーブルへの参照か、リテラルである関数のパフォーマンスを改善しました。
-
インデックス構築 トークンカラムを使った静的インデックス構築のパフォーマンスを改善しました。
-
"_score = func(...)"
のパフォーマンスを改善しました。_score
の値が"_score = func(...)"
のように関数によってのみ算出される場合のパフォーマンスを改善しました。
-
応答送信のエラーが発生した後の応答にゴミが含まれることがある問題を修正しました。
- これは、クライアントが全ての応答を読み込まずにコネクションがクローズされた場合に発生することがあります。
logical_select highlight_html
と highlight_full
をサポートしました。
-
highlight_html
とhighlight_full
は、今までselect
の--output-columns
でしか使えませんでしたが、 今回のリリースから、以下のようにlogical_select
でも使えるようになりました。plugin_register sharding plugin_register functions/number table_create Memos_20170315 TABLE_NO_KEY column_create Memos_20170315 timestamp COLUMN_SCALAR Time column_create Memos_20170315 content COLUMN_SCALAR Text table_create Memos_20170316 TABLE_NO_KEY column_create Memos_20170316 timestamp COLUMN_SCALAR Time column_create Memos_20170316 content COLUMN_SCALAR Text table_create Memos_20170317 TABLE_NO_KEY column_create Memos_20170317 timestamp COLUMN_SCALAR Time column_create Memos_20170317 content COLUMN_SCALAR Text load --table Memos_20170315 [ {"timestamp": "2017/03/15 00:00:00", "content": "Groonga is fast."}, {"timestamp": "2017/03/15 01:00:00", "content": "Mroonga is fast and easy to use."} ] load --table Memos_20170316 [ {"timestamp": "2017/03/16 10:00:00", "content": "PGroonga is fast and easy to use."}, {"timestamp": "2017/03/16 11:00:00", "content": "Rroonga is fast and easy to use."} ] logical_select Memos \ --shard_key timestamp \ --query 'content:@easy' \ --output_columns 'content, highlight_html(content)' [ [ 0, 0.0, 0.0 ], [ [ [ 3 ], [ [ "content", "Text" ], [ "highlight_html", null ] ], [ "Mroonga is fast and easy to use.", "Mroonga is fast and <span class=\"keyword\">easy</span> to use." ], [ "PGroonga is fast and easy to use.", "PGroonga is fast and <span class=\"keyword\">easy</span> to use." ], [ "Rroonga is fast and easy to use.", "Rroonga is fast and <span class=\"keyword\">easy</span> to use." ] ] ] ]
さいごに
それでは、Groongaでガンガン検索してください!