BloGroonga

2021-12-29

Groonga 11.1.1リリース

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

それぞれの環境毎のインストール方法: インストール

変更内容

主な変更点は以下の通りです。

改良

  • select 組み合わせフレーズ近傍検索をサポートしました。

    この機能は、 '*NP"..." OR *NP"..." OR ...' の短縮形です。 例えば、以下のように、 query を使って *NP を複数実行する式のかわりに *NPP を使えます。

      query ("title * 10 || content",
             "*NP"a 1 x" OR
              *NP"a 1 y" OR
              *NP"a 1 z" OR
              *NP"a 2 x" OR
              *NP"a 2 y" OR
              *NP"a 2 z" OR
              *NP"a 3 x" OR
              *NP"a 3 y" OR
              *NP"a 3 z" OR
              *NP"b 1 x" OR
              *NP"b 1 y" OR
              *NP"b 1 z" OR
              *NP"b 2 x" OR
              *NP"b 2 y" OR
              *NP"b 2 z" OR
              *NP"b 3 x" OR
              *NP"b 3 y" OR
              *NP"b 3 z"")
    

    この機能によって、上記の式を *NPP"(a b) (1 2 3) (x y z)" と書くことができます。 加えて、 *NPP"(a b) (1 2 3) (x y z)" は、 '*NP"..." OR *NP"..." OR ...' より高速です。

      query ("title * 10 || content",
             "*NPP"(a b) (1 2 3) (x y z)"")
    

    この機能は、 '*NP"..." OR *NP"..." OR ...' のような近傍フレーズ検索のパフォーマンスを改善するために実装されました。

  • select 順序付き組み合わせフレーズ近傍検索をサポートしました。

    この機能は、 '*ONP"..." OR *ONP"..." OR ...' の短縮形です。 例えば、以下のように、 query を使って *ONP を複数実行する式のかわりに *ONPP を使えます。

      query ("title * 10 || content",
             "*ONP"a 1 x" OR
              *ONP"a 1 y" OR
              *ONP"a 1 z" OR
              *ONP"a 2 x" OR
              *ONP"a 2 y" OR
              *ONP"a 2 z" OR
              *ONP"a 3 x" OR
              *ONP"a 3 y" OR
              *ONP"a 3 z" OR
              *ONP"b 1 x" OR
              *ONP"b 1 y" OR
              *ONP"b 1 z" OR
              *ONP"b 2 x" OR
              *ONP"b 2 y" OR
              *ONP"b 2 z" OR
              *ONP"b 3 x" OR
              *ONP"b 3 y" OR
              *ONP"b 3 z"")
    

    この機能によって、上記の式を *ONPP"(a b) (1 2 3) (x y z)" と書くことができます。 加えて、 *ONPP"(a b) (1 2 3) (x y z)" は、 '*ONP"..." OR *ONP"..." OR ...' より高速です。

      query ("title * 10 || content",
             "*ONPP"(a b) (1 2 3) (x y z)"")
    

    この機能は '*ONP"..." OR *ONP"..." OR ...' のような順序付き近傍フレーズ検索のパフォーマンスを改善するために実装されました。

  • request_cancel 検索実行中に request_cancel を検知しやすくしました。

    request_cancel を検知するために、リターンコードのチェックを増やしたためです。

  • thread_dump 新しいコマンド thread_dump を追加しました。

    現状、このコマンドはWindowsでしか動作しません。 このコマンド実行時の全てのスレッドのバックトレースをNOTICEレベルのログとして出力できます。

    この機能は、Groongaが応答を返さない等の問題を解決するのに役立ちます。

  • CentOS CentOS 8のサポートをやめました。

    CentOS 8は、2021年12月31日でEOLとなるためです。

修正

  • 無効なパラメータを持つインデックスカラムを削除できない問題を修正しました。

    例えば、以下のように column_create を使って無効なインデックスカラムを作成した時、テーブルが削除できなくなります。

    table_create Statuses TABLE_NO_KEY
    column_create Statuses start_time COLUMN_SCALAR UInt16
    column_create Statuses end_time COLUMN_SCALAR UInt16
    
    table_create Times TABLE_PAT_KEY UInt16
    column_create Times statuses COLUMN_INDEX Statuses start_time,end_time
    # [
        [
          -22,
          1639037503.16114,
          0.003981828689575195,
          "grn_obj_set_info(): GRN_INFO_SOURCE: multi column index must be created with WITH_SECTION flag: <Times.statuses>",
          [
            [
              "grn_obj_set_info_source_validate",
              "../../groonga/lib/db.c",
              9605
            ],
            [
              "/tmp/d.grn",
              6,
              "column_create Times statuses COLUMN_INDEX Statuses start_time,end_time"
            ]
          ]
        ],
        false
      ]
    table_remove Times
    # [
        [
          -22,
          1639037503.16515,
          0.0005414485931396484,
          "[object][remove] column is broken: <Times.statuses>",
          [
            [
              "remove_columns",
              "../../groonga/lib/db.c",
              10649
            ],
            [
              "/tmp/d.grn",
              8,
              "table_remove Times"
            ]
          ]
        ],
        false
      ]
    

既知の問題

  • 現在Groongaには、ベクターカラムに対してデータを大量に追加、削除、更新した際にデータが破損することがある問題があります。

  • *<*> は、filter条件の右辺に query() を使う時のみ有効です。もし、以下のように指定した場合、 *<*>&& として機能します。

    • 'content @ "Groonga" *< content @ "Mroonga"'
  • GRN_II_CURSOR_SET_MIN_ENABLE が原因でマッチするはずのレコードを返さないことがあります。

さいごに

詳細については、以下のお知らせも参照してください。

お知らせ 11.1.1リリース

それでは、Groongaでガンガン検索してください!