Mroongaブログ

2021-12-29

Mroonga 11.11リリース!

Mroonga 11.11 をリリースしました!

変更点

今回の変更点は以下の通りです。

改良

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

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

修正

  • AlmaLinux MariaDB 10.3、10.4、10.5、10.6向けMroongaを提供していなかった問題を修正しました。

  • [Documentation]Install 誤記を修正しました。

  • [Documentation]CentOS percona-release-latest.noarch.rpm のURLを修正しました。

おわりに

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

2021-11-29

Mroonga 11.10リリース!

Mroonga 11.10 をリリースしました!

変更点

今回の変更点は以下の通りです。

改良

  • AlmaLinux AlmaLinux 8 をサポートしました。

    • AlmaLinux MySQL 8.0.27をサポートしました。

      • MySQL 8.0 のパッケージには以下の制限があります。

    • AlmaLinux Percona Server 8.0.26をサポートしました。

    • AlmaLinux MariaDB 10.3.32、10.4.22、10.5.13、10.6.5をサポートしました。

  • CentOS MariaDB 10.2.41、10.3.32、10.4.22、10.5.13、10.6.5をサポートしました。

  • Ubuntu Ubuntu 21.04 (Hirsute Hippo) と 21.10 (Impish Indri) の MySQL 8.0 をサポートしました。

    • MySQL 8.0 のパッケージには以下の制限があります。

修正

  • CentOS MariaDB 10.6向けMroongaを提供していなかった問題を修正しました。

  • 最適化 Mroongaが行カウントの最適化を誤って適用する問題を修正しました。

    通常、Mroongaは、 SELECTCOUNT(*) だけを取得し、 WHERE の条件がインデックスだけで処理できる時に、 行カウントの最適化を適用します。

    しかし、以下のケースのように WHERE の条件がインデックスだけで処理できない場合でも、Mroongaは、行カウントの最適化を適用していました。 結果として、 SELECT COUNT(*) WHERE ... の結果が間違っていました。

      CREATE TABLE roles (
        id INT
      );
    
      INSERT INTO roles VALUES (1), (2), (3), (4), (5);
    
      CREATE TABLE users (
        id INT,
        role_id INT,
        INDEX (role_id)
      );
    
      INSERT INTO users VALUES (10, 1);
      INSERT INTO users VALUES (11, 2);
      INSERT INTO users VALUES (13, 3);
      INSERT INTO users VALUES (14, 4);
      INSERT INTO users VALUES (15, 5);
      INSERT INTO users VALUES (20, 1);
      INSERT INTO users VALUES (21, 2);
      INSERT INTO users VALUES (23, 3);
      INSERT INTO users VALUES (24, 4);
      INSERT INTO users VALUES (25, 5);
    
      SELECT COUNT(*)
        FROM (
          SELECT roles.id
            FROM roles
                 LEFT JOIN users ON users.id <= 100 AND
                                    users.role_id = roles.id
        ) roles_users;
    
  • Mroongaが 'STRING_FIELD =' のコンディションプッシュダウンで適切なエンコーディングを設定しない問題を修正しました。

    以下ケースでは、 Mroongaが 'STRING_FIELD =' の条件をコンディションプッシュダウンしますが、 この時、Mroongaは適切なエンコーディングを検索キーワードに設定しません。 結果として、Mroongaは検索キーワードのノーマライズに失敗します。

      CREATE TABLE memos (
        id INT PRIMARY KEY,
        title TEXT,
        INDEX (title)
      ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4;
    
      INSERT INTO memos VALUES (1, 'Groonga');
      INSERT INTO memos VALUES (2, 'Mroonga');
    
      SELECT *
        FROM memos
        WHERE title = 'mroonga'
        ORDER BY id;
    

おわりに

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

2021-11-04

Mroonga 11.09リリース!

Mroonga 11.09 をリリースしました!

変更点

今回の変更点は以下の通りです。

改良

  • CentOS MySQL 5.7.36, 8.0.27をサポートしました。

  • CentOS Percona Server 8.0.26をサポートしました。

おわりに

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

2021-10-06

Mroonga 11.08リリース!

Mroonga 11.08 をリリースしました!

変更点

今回の変更点は以下の通りです。

修正

  • MySQL 5.7で作成されたDBをMySQL 8.0にアップグレードすると、Mroongaがクラッシュする問題を修正しました。

おわりに

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

2021-09-29

Mroonga 11.07リリース!

Mroonga 11.07 をリリースしました!

重要なお知らせ

Mroongaには、MySQL 5.7で作成されたDBをMySQL 8.0にアップグレードすると、Mroongaがクラッシュする問題がありました。 この問題は、Mroonga 11.08で修正されています。 MySQL 8.0 より前のバージョンでMroongaを使用しているユーザーは、Mroonga 11.08以降を使うことを強くおすすめします。

変更点

今回の変更点は以下の通りです。

改良

  • Ubuntu Ubuntu 20.04 (Focal Fossa) の MySQL 8.0 をサポートしました。

    • MySQL 8.0 のパッケージには以下の制限があります。

  • mroonga_snippet_html() ノーマライザーのカスタマイズに対応しました。

    • この機能によって、以下のように mroonga_smippet_html() でカスタマイズしたノーマライザーを使えます。

      CREATE TABLE terms (
        term VARCHAR(64) NOT NULL PRIMARY KEY
      ) COMMENT='normalizer "NormalizerNFKC130(''unify_kana'', true)"'
        DEFAULT CHARSET=utf8mb4
        COLLATE=utf8mb4_unicode_ci;
      
      SELECT mroonga_snippet_html('これはMroonga(ムルンガ)です。',
                                  'terms' as lexicon_name,
                                  'むるんが') as snippet;
      
      snippet
      <div class="snippet">これはMroonga(<span class="keyword">ムルンガ</span>)です。</div>
      
  • ベクターカラムの値をバイナリーではなくテキストとして出力できるようにしました。

    • この機能によって、ベクターカラムの値をダンプするのに、 mysqldump を使えます。
  • 存在しないテーブルを削除した際に、 .mrn ファイルを作らないようにしました。

  • ベクターの要素に対して W プラグマを使えるようにしました。

    • この機能によって、ベクターの要素に重みをセットできますが、この場合、Mroongaは指定したセクションのみ検索します。 通常のマルチカラムインデックスでは、Mroongaは指定していないセクションもデフォルトの重みで検索します。

修正

  • WHERE句に "WHERE primary_key IN ("")" と指定した際にMroongaが誤ったレコードを返すことがある問題を修正しました。

    • 例えば、以下ようなケースでMroongaが誤ったレコードを返すことがあります。

      CREATE TABLE ids (
        id varchar(7) PRIMARY KEY,
        parent_id varchar(7)
      )ENGINE=Mroonga DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
      
      INSERT INTO ids VALUES("abcdefg", "");
      INSERT INTO ids VALUES("hijklmn", "");
      INSERT INTO ids VALUES("opqrstu", "hijklmn");
      
      SELECT * FROM ids WHERE id IN (SELECT parent_id FROM ids);
      +---------+-----------+
      | id      | parent_id |
      +---------+-----------+
      | abcdefg |           |
      | hijklmn |           |
      +---------+-----------+
      2 rows in set (0.00 sec)
      

おわりに

11.06からの詳細な変更点は11.07リリース - 2021-09-29を確認してください。

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