[groonga-dev,04925] [ANN] Groonga 12.0.0

Back to archive index
Horimoto Yasuhiro horim****@clear*****
2022年 2月 9日 (水) 17:26:57 JST


こんばんは。堀本です。

Groonga 12.0.0 をリリースしました!

    https://groonga.org/ja/docs/news.html#release-12-0-0

メジャーバージョンアップです!
メジャーバージョンアップですが、互換性を壊すような変更は入っていないので
データベースを再構築することなく12.0.0へアップグレードできます。

変更点一覧:

    https://groonga.org/ja/blog/2022/02/09/groonga-12.0.0.html

## 主な変更内容

### 改良

  * [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-dev メーリングリストの案内
Back to archive index