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でガンガン検索してください!