こんばんは。堀本です。
少し遅くなってしまいましたが、Groonga 11.0.5 をリリースしました!
https://groonga.org/ja/docs/news.html#release-11-0-5
変更点一覧:
https://groonga.org/ja/blog/2021/07/29/groonga-11.0.5.html
## 主な変更内容
* [Normalizers] ノーマライザーを複数指定できるようになりました。
テーブル作成時に --normalizers オプションを使うことで、複数のノーマライザーを指定できます。
互換性のため、既存の --normalizer を使っても複数のノーマライザーを指定できます。
Groonga 11.0.4 でノーマライザーをカスタマイズするための NormalizerTable を追加しました。
この NormalizerTable と既存のノーマライザーを組み合わせることでより柔軟な制御ができます。
* [query_parallel_or]、[query] シーケンシャルサーチのしきい値をカスタマイズできるようにしました。
以下のオプションを使うことで、シーケンシャルサーチを使うかどうかのしきい値を
クエリーごとにカスタマイズできます。
* {"max_n_enough_filtered_records": xx}
max_n_enough_filtered_records は、レコード数を指定します。
query または、 query_parallel_or で、この値以下までレコードが絞り込めそうな場合、
シーケンシャルサーチを使います。
* {"enough_filtered_ratio": x.x}
enough_filtered_ratio は、全体に占める割合を指定します。
query または、 query_parallel_or で、この割合以下までレコードが絞り込めそうな場合、
シーケンシャルサーチを使います。
例えば、 {"enough_filtered_ratio": 0.5} とした場合、 query または query_parallel_or
で全体の半分まで絞り込めそうな場合はシーケンシャルサーチを使います。
* [between]、[in_values] シーケンシャルサーチのしきい値をカスタマイズできるようにしました。
[between]と [in_values] は、検索対象のレコードが十分に絞り込まれている時に、シーケンシャル
サーチに切り替える機能があります。
今までも、以下のように環境変数でこのしきい値はカスタマイズできました。
* GRN_IN_VALUES_TOO_MANY_INDEX_MATCH_RATIO
* GRN_BETWEEN_TOO_MANY_INDEX_MATCH_RATIO
環境変数によるカスタマイズは、すべてのクエリーに対して適用されますが、
この機能は、クエリーごとにしきい値を指定できます。
* [between] GRN_EXPR_OPTIMIZE=yes をサポートしました。
* between() で、条件式の評価順序の最適化をサポートしました。
* [query_parallel_or]、[query] match_columns を vector で指定できるようにしました。
* [select] 前方一致検索でセクションと重みをサポートしました。
前方一致検索でマルチカラムインデックスと、スコアーの調整ができます。
* [grndb] grndb recover で使用したオブジェクトを即時閉じるようにしました。
これにより、メモリ消費を抑制できます。おそらくパフォーマンスは低下していますが、許容可能な低下です。
grndb check はまだ、使用したオブジェクトを即時閉じないので注意してください。
* [query_parallel_or]、[query] match_columns に scorer_tf_idf を指定できるようにしました。
* [query_expand] 展開後の語の重みを操作できるようにしました。
展開後の語に対して、重みを指定できます。
スコアーを増やしたい場合は、 ``>`` を使います。スコアーを減らしたい場合は、 ``<`` を指定します。
数字でスコアーの量を指定できます。負の数も指定できます。
* [httpd] バンドルしているnginxのバージョンを1.21.1に更新しました。
* バンドルしているApache Arrowを5.0.0に更新しました。
## 修正
* [query_parallel_or]、[query] query_options とその他のオプションを指定すると、
その他のオプションが無視される問題を修正しました。
## 既知の問題
* 現在Groongaには、ベクターカラムに対してデータを大量に追加、削除、更新した際にデータが
破損することがある問題があります。
* [ブラウザーベースの管理ツール] 現在Groongaには、レコード一覧の管理モードのチェックボックスに
チェックを入れても、非管理モードに入力された検索クエリーが送信されるという問題があります。
* *< と *> は、filter条件の右辺に query() を使う時のみ有効です。
もし、以下のように指定した場合、 *< と *> は && として機能します。
* 'content @ "Groonga" *< content @ "Mroonga"'
* 多くのデータを削除し、同じデータを再度loadすることを繰り返すと、Groongaがヒットすべき
レコードを返さないことがあります。