Groonga 12.0.0リリース
Groonga 12.0.0をリリースしました!
それぞれの環境毎のインストール方法: インストール
変更内容
主な変更点は以下の通りです。
改良
-
sub_filter 新しいオプション pre_filter_threshold を追加しました。
このオプションで、
GRN_SUB_FILTER_PRE_FILTER_THRESHOLD
の値を変更できます。 Groongaがsub_filter
実行時に レコード数がGRN_SUB_FILTER_PRE_FILTER_THRESHOLD
以下だった場合、Groongaは既に絞り込んだレコードに対してsub_filter
を実行します。-1
にすると、常にこの最適化を有効にできます。 -
[index_column_have_source_record] 新しい関数
index_column_have_source_record()
を追加しました。インデックスに存在するトークンがGroongaに登録されているいずれかのレコードに含まれているかどうかを確認できます。
Groongaは、レコードの更新によってどのレコードからも使われていないトークンがあっても、それを削除しません。 したがって、例えば、オートコンプリート機能を使っていると、検索候補としてどのレコードにも含まれていないトークンを返す可能性がありますが、 この関数をつかうことで、不要なトークンを返さないようにできます。
この関数は、トークンがどのレコードにも含まれていないことを検出できるからです。
-
NormalizerNFKC130 新しいオプション
strip
を追加しました。このオプションは、以下のように先頭と末尾から空白を削除します。
normalize \ 'NormalizerNFKC121("strip", true, \ "report_source_offset", true)' \ " hello world\t! \t " \ WITH_CHECKS|WITH_TYPES [ [ 0, 0.0, 0.0 ], { "normalized": "hello world!", "types": [ "alpha", "alpha", "alpha", "alpha", "alpha", "others", "alpha", "alpha", "alpha", "alpha", "alpha|blank", "symbol|blank" ], "checks": [ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 ], "offsets": [ 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14 ] } ]
-
select 新しい引数
drilldown_max_n_target_records
とdrilldown[${LABEL}].max_n_target_records
を追加しました。ドリルダウン対象のテーブル(フィルター結果)の中のうち最大で何レコードをドリルダウンに使うかを指定します。 もし、フィルター結果のレコード数が指定した値より大きかったらフィルターした結果内のいくつかのレコードはドリルダウンには使われません。 これらの引数のデフォルト値は、
-1
です。これらの引数に-1
がセットされた場合、Groongaは全てのレコードをドリルダウンに使います。この機能はフィルター結果が非常に大きくなるかもしれない場合に有用です。 大きなフィルター結果に対するドリルダウンは遅くなることがあるためです。この機能を使うことでドリルダウンに使うレコード数を制限できます。
以下はドリルダウンに使う最大レコード数を制限する例です。 最後の2レコード(
{"_id": 4, "tag": "Senna"}
と{"_id": 5, "tag": "Senna"}
)は使われていません。table_create Entries TABLE_HASH_KEY ShortText column_create Entries content COLUMN_SCALAR Text column_create Entries n_likes COLUMN_SCALAR UInt32 column_create Entries tag COLUMN_SCALAR ShortText table_create Terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram --normalizer NormalizerAuto column_create Terms entries_key_index COLUMN_INDEX|WITH_POSITION Entries _key column_create Terms entries_content_index COLUMN_INDEX|WITH_POSITION Entries content load --table Entries [ {"_key": "The first post!", "content": "Welcome! This is my first post!", "n_likes": 5, "tag": "Hello"}, {"_key": "Groonga", "content": "I started to use Groonga. It's very fast!", "n_likes": 10, "tag": "Groonga"}, {"_key": "Mroonga", "content": "I also started to use Mroonga. It's also very fast! Really fast!", "n_likes": 15, "tag": "Groonga"}, {"_key": "Good-bye Senna", "content": "I migrated all Senna system!", "n_likes": 3, "tag": "Senna"}, {"_key": "Good-bye Tritonn", "content": "I also migrated all Tritonn system!", "n_likes": 3, "tag": "Senna"} ] select Entries \ --limit -1 \ --output_columns _id,tag \ --drilldown tag \ --drilldown_max_n_target_records 3 [ [ 0, 1337566253.89858, 0.000355720520019531 ], [ [ [ 5 ], [ [ "_id", "UInt32" ], [ "tag", "ShortText" ] ], [ 1, "Hello" ], [ 2, "Groonga" ], [ 3, "Groonga" ], [ 4, "Senna" ], [ 5, "Senna" ] ], [ [ 2 ], [ [ "_key", "ShortText" ], [ "_nsubrecs", "Int32" ] ], [ "Hello", 1 ], [ "Groonga", 2 ] ] ] ]
-
[httpd] バンドルしているnginxのバージョンを1.21.6に更新しました。
既知の問題
-
現在Groongaには、ベクターカラムに対してデータを大量に追加、削除、更新した際にデータが破損することがある問題があります。
-
*<
と*>
は、filter条件の右辺にquery()
を使う時のみ有効です。もし、以下のように指定した場合、*<
と*>
は&&
として機能します。'content @ "Groonga" *< content @ "Mroonga"'
-
GRN_II_CURSOR_SET_MIN_ENABLE
が原因でマッチするはずのレコードを返さないことがあります。
さいごに
詳細については、以下のお知らせも参照してください。
それでは、Groongaでガンガン検索してください!