mysql:16423
From: Kentaro Hayashi <Kentaro Hayashi <hayashi@xxxxxxxxxx>>
Date: Tue, 29 Aug 2017 17:31:13 +0900
Subject: [mysql 16423] [ANN] Mroonga 7.06 - MySQLで高速日本語全文検索
こんにちは、Mroongaプロジェクトの林です。 Mroonga 7.06をリリースしました! http://mroonga.org/ja/blog/2017/08/29/mroonga-7.06.html 7.05からの変更点: http://mroonga.org/ja/docs/news.html#release-7-06 MroongaはMySQLで日本語全文検索を実現するストレージエンジンです。高速で あることや位置情報検索をサポートしていることなどが特徴です。詳細が気に なる方はドキュメントをご覧ください。 * Mroongaの特徴 ― Mroonga v7.06 documentation http://mroonga.org/ja/docs/characteristic.html#what-is-mroonga さて、今月の主な変更点は次のとおりです。 * 生成カラム(Generated Column)のサポート ### 生成カラム(Generated Column)のサポート 今回のリリースでは、生成カラム(Generated Column)をMroongaでもサポート しました。 これは他のカラムの値を自動計算した結果を取り出すことのでき るカラムを定義できる機能です。 たとえば、次のような定義でJSONの一部を取り出した結果を使って検索するこ とができるようになります。 CREATE TABLE logs ( id INT, record JSON, message VARCHAR(255) GENERATED ALWAYS AS (json_extract(`record`, '$.message')) STORED, FULLTEXT INDEX(message) comment 'tokenizer "TokenBigramSplitSymbolAlphaDigit"' ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4; 上記の例だと、record の値の一部を message カラムの内容として定義してい ます。 すると、次のようなクエリでJSONの一部だけを全文検索することがで きます。 > SELECT * FROM logs WHERE MATCH(message) AGAINST("ar" IN BOOLEAN MODE); +------+-----------------------------------------+-----------+ | id | record | message | +------+-----------------------------------------+-----------+ | 1 | {"level": "info", "message": "start"} | "start" | | 2 | {"level": "info", "message": "restart"} | "restart" | +------+-----------------------------------------+-----------+ 2 rows in set (0.02 sec) 実データを持たない VIRTUAL も定義できます。 CREATE TABLE logs ( id INT, record JSON, message VARCHAR(255) GENERATED ALWAYS AS (json_extract(`record`, '$.message')) VIRTUAL ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4; ただし、この場合、FULLTEXT INDEX(message) を張ることはできません。 -- Kentaro Hayashi <hayashi@xxxxxxxxxx>