BloGroonga

2021-05-10

Groonga 11.0.2リリース

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

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

変更内容

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

改良

  • [Documentation] ruby_load コマンドのリファレンスを削除しました。

    • このコマンドはすでに削除されているためです。
  • Debian GNU/Linux Debian 11 (Bullseye) をサポートしました。

  • select --post_filter をサポートしました。

  • select --slices[].post_filter をサポートしました。

  • select --sort_keys 内に式を記述できるようになりました。

  • Token filters オプションをつけた複数のトークンカラムを使えるようにしました。

    • --token_filters 'TokenFilterStopWord("column", "ignore"), TokenFilterNFKC130("unify_kana", true)' のように複数のトークンフィルターを指定できます。
  • query 複雑な式で result_set ステージの動的カラムを扱えるようにしました。

    • 複雑な式とは、以下のように一時的な内部結果セットが必要な式です。

      '(true && query("name * 10", "ali", {"score_column": "ali_score"})) || \
       (true && query("name * 2", "li", {"score_column": "li_score"}))'
      
      • 上記の式では、 true の評価結果を格納するために一時的な結果セットを使用します。
      • したがって、例えば、以下の式では、式の中で result_set ステージの動的カラムの値を使えます。以下の式では、一時的な内部結果セットが必要ないためです。

        '(query("name * 10", "ali", {"score_column": "ali_score"})) || \
         (query("name * 2", "li", {"score_column": "li_score"}))'
        
    • 今回のリリースでは、以下のように li_score に値を設定できます。(以前のバージョンでは、2番めの式が動的カラムの値を取得出来なかったため、 li_score の値は 0 になっていました。)

      table_create Users TABLE_NO_KEY
      column_create Users name COLUMN_SCALAR ShortText
      
      table_create Lexicon TABLE_HASH_KEY ShortText \
        --default_tokenizer TokenBigramSplitSymbolAlphaDigit \
        --normalizer NormalizerAuto
      column_create Lexicon users_name COLUMN_INDEX|WITH_POSITION Users name
      
      load --table Users
      [
      {"name": "Alice"},
      {"name": "Alisa"},
      {"name": "Bob"}
      ]
      
      select Users \
        --columns[ali_score].stage result_set \
        --columns[ali_score].type Float \
        --columns[ali_score].flags COLUMN_SCALAR \
        --columns[li_score].stage result_set \
        --columns[li_score].type Float \
        --columns[li_score].flags COLUMN_SCALAR \
        --output_columns name,_score,ali_score,li_score \
        --filter '(true && query("name * 10", "ali", {"score_column": "ali_score"})) || \
                  (true && query("name * 2", "li", {"score_column": "li_score"}))'
      [
        [
          0,
          0.0,
          0.0
        ],
        [
          [
            [
              2
            ],
            [
              [
                "name",
                "ShortText"
              ],
              [
                "_score",
                "Int32"
              ],
              [
                "ali_score",
                "Float"
              ],
              [
                "li_score",
                "Float"
              ]
            ],
            [
              "Alice",
              14,
              10.0,
              2.0
            ],
            [
              "Alisa",
              14,
              10.0,
              2.0
            ]
          ]
        ]
      ]
      
    • 以下のように、 result_set ステージの動的ベクターカラムも扱えるようにしました。

      table_create Users TABLE_NO_KEY
      column_create Users name COLUMN_SCALAR ShortText
      
      table_create Lexicon TABLE_HASH_KEY ShortText \
        --default_tokenizer TokenBigramSplitSymbolAlphaDigit \
        --normalizer NormalizerAuto
      column_create Lexicon users_name COLUMN_INDEX|WITH_POSITION Users name
      
      load --table Users
      [
      {"name": "Alice"},
      {"name": "Alisa"},
      {"name": "Bob"}
      ]
      
      select Users \
        --columns[tags].stage result_set \
        --columns[tags].type ShortText \
        --columns[tags].flags COLUMN_VECTOR \
        --output_columns name,tags \
        --filter '(true && query("name", "al", {"tags": ["al"], "tags_column": "tags"})) || \
                  (true && query("name", "sa", {"tags": ["sa"], "tags_column": "tags"}))'
      [
        [
          0,
          0.0,
          0.0
        ],
        [
          [
            [
              2
            ],
            [
              [
                "name",
                "ShortText"
              ],
              [
                "tags",
                "ShortText"
              ]
            ],
            [
              "Alice",
              [
                "al"
              ]
            ],
            [
              "Alisa",
              [
                "al",
                "sa"
              ]
            ]
          ]
        ]
      ]
      
  • Ubuntu Ubuntu 21.04 (Hirsute Hippo) をサポートしました。

  • [httpd] バンドルしているnginxのバージョンを1.19.10に更新しました。

既知の問題

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

  • [ブラウザーベースの管理ツール] 現在Groongaには、レコード一覧の管理モードのチェックボックスにチェックを入れても、非管理モードに入力された検索クエリーが送信されるという問題があります。

さいごに

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

お知らせ 11.0.2リリース

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