mysql:16428
From: Kentaro Hayashi <Kentaro Hayashi <hayashi@xxxxxxxxxx>>
Date: Fri, 13 Oct 2017 13:31:58 +0900
Subject: [mysql 16428] [ANN] Mroonga 7.07 - MySQLで高速日本語全文検索
こんにちは、Mroongaプロジェクトの林です。 Mroonga 7.07をリリースしました! http://mroonga.org/ja/blog/2017/10/12/mroonga-7.07.html 7.06からの変更点: http://mroonga.org/ja/docs/news.html#release-7-07 MroongaはMySQLで日本語全文検索を実現するストレージエンジンです。高速で あることや位置情報検索をサポートしていることなどが特徴です。詳細が気に なる方はドキュメントをご覧ください。 * Mroongaの特徴 ― Mroonga v7.07 documentation http://mroonga.org/ja/docs/characteristic.html#what-is-mroonga さて、7.07の主な変更点は次のとおりです。 * MariaDB公式が提供している10.1/10.2パッケージに対応しました * mroonga_query_expand UDFのサポート ## MariaDB公式が提供している10.1/10.2パッケージに対応しました 今回のリリースから、MariaDB公式が提供している10.1および10.2向けのパッ ケージの提供を始めました。 対象となるのは、CentOS 6とCentOS 7です。 対応している環境それぞれのインストール手順についてはドキュメントを参照してください。 * CentOS 6でMariaDB 10.1のパッケージを利用 http://mroonga.org/ja/docs/install/centos.html#centos-6-with-mariadb-10-1-package * CentOS 6でMariaDB 10.2のパッケージを利用 http://mroonga.org/ja/docs/install/centos.html#centos-6-with-mariadb-10-2-package * CentOS 7でMariaDB 10.1のパッケージを利用 http://mroonga.org/ja/docs/install/centos.html#centos-7-with-mariadb-10-1-package * CentOS 7でMariaDB 10.2のパッケージを利用 http://mroonga.org/ja/docs/install/centos.html#centos-7-with-mariadb-10-2-package ### mroonga_query_expand UDFのサポート 今回のリリースでは、mroonga_query_expand というUDFをサポートしました。 これはクエリーに含まれる語の同義語を展開して検索するのに使います。 使い方の例を示します。 CREATE TABLE diaries ( id INT PRIMARY KEY AUTO_INCREMENT, content VARCHAR(255), FULLTEXT INDEX (content) ) ENGINE = Mroonga DEFAULT CHARSET utf8; CREATE TABLE synonyms ( term varchar(255), synonym varchar(255), INDEX (term) ) ENGINE= Mroonga DEFAULT CHARSET utf8; 全文検索用の diaries テーブルと同義語を定義する synonyms テーブルを例では使います。 これに、同義語のデータと検索対象のデータを登録します。 INSERT INTO synonyms VALUES ('Groonga', 'Groonga Mroonga Rroonga'); INSERT INTO diaries (content) VALUES ("Groonga is fast."); INSERT INTO diaries (content) VALUES ("Mroonga is fast."); INSERT INTO diaries (content) VALUES ("PGroonga is fast."); これでサンプルを試す準備ができました。 mroonga_query_expand の構文は次のとおりです。 mroonga_query_expand("同義語を定義するテーブル", "対象語句のカラム", "同義語を定義したカラム", "検索語句"); Groonga で検索したら Mroonga でも検索したい場合には次のように mroonga_query_expand を使って検索します。 mysql> SELECT * FROM diaries WHERE MATCH(content) AGAINST(mroonga_query_expand("synonyms", "term", "synonym", "Groonga") IN BOOLEAN MODE); +----+------------------+ | id | content | +----+------------------+ | 1 | Groonga is fast. | | 2 | Mroonga is fast. | +----+------------------+ 2 rows in set (0.01 sec) mroonga_query_expandがsynonyms テーブルから Groonga に対応する 「(Groonga Mroonga Rroonga)」を返すので、期待通りにGroongaとMroongaを 含む結果を取得できました。 -- Kentaro Hayashi <hayashi@xxxxxxxxxx>