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

