Mroonga blog

2021-09-29

Mroonga 11.07 has been released!

Mroonga is a MySQL storage engine that supports fast fulltext search and geolocation search. It is CJK ready. It uses Groonga as a storage and fulltext search engine.

Mroonga 11.07 has been released!

Important notice

Mroonga has had a bug that if we upgrade DB created by MySQL 5.7 to MySQL 8.0, Mroonga crashes.

We fixed this bug on Mroonga 11.08. Therefore, if you were using Mroonga on MySQL 5.7 or previous version, we highly recommended that we use Mroonga 11.08 or later.

Changes

The main changes are as follows.

Improvements

  • Ubuntu Added support for MySQL 8.0 on Ubuntu 20.04 (Focal Fossa).

    • There are below restrictions in the MySQL 8.0 package.

      • Wrapper mode Wrapper mode is not supported yet.

      • Storage mode Storage mode does not support the following feature.

        • The feature of relevant to the optimization.
  • mroonga_snippet_html() Added support for specifying lexicon name.

    • We can use custom normalizer in mroonga_smippet_html() by this feature as below.

      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>
      
  • Added support for outputting vector column values as text not raw binary.

    • We can use mysqldump for dumping vector column values by this feature.
  • Don't create .mrn files if nonexistent table is dropped.

  • Added support for W pragma against elements of vector column.

    • We can set the weight to elements of vector column by this feature. However, Mroonga only search the specified section in this case. In a normal multiple column index, Mroonga also searches not specified sections with the default weight.

Fixes

  • Fixed a bug that if we use "WHERE primary_key IN ("")" in a where clause, Mroonga may return wrong record.

    • For example, Mroonga may return wrong record as below.

      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)
      

Conclusion

See Release 11.07 - 2021-09-29 about detailed changes since 11.06.

Let's search by Mroonga!