MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
組込みの MySQL 全文パーサーは、単語間の空白をデリミタとして使用して、単語の開始位置と終了位置を決定します。これは、単語デリミタを使用しない表意文字言語を使用する場合の制限です。 日本語のこの制限に対処するために、MySQL には MeCab 全文パーサープラグインが用意されています。 MeCab 全文パーサープラグインは、InnoDB
および MyISAM
での使用がサポートされています。
MySQL には、日本語をサポートする ngram 全文パーサープラグインも用意されています。 詳細は、セクション12.10.8「ngram 全文パーサー」を参照してください。
MeCab 全文パーサープラグインは、一連のテキストを意味のある単語にトークン化する日本語の全文パーサープラグインです。 たとえば、MeCab は、「「データベース管理」」 (「「データベース管理」」) を「「データベース」」 (「「データベース」」) および「「管理」」 (「「管理」」) にトークン化します。 比較すると、ngram 全文パーサーは、テキストを連続した一連の n
文字にトークン化します。ここで、n
は 1 から 10 までの数値を表します。
テキストを意味のある単語にトークン化するだけでなく、MeCab インデックスは通常 ngram インデックスよりも小さく、MeCab 全文検索は一般的に高速です。 欠点は、ngram 全文パーサーに比べて、MeCab 全文パーサーがドキュメントをトークン化するのに時間がかかることです。
セクション12.10「全文検索関数」 で説明されている全文検索構文は、MeCab パーサープラグインに適用されます。 このセクションでは、解析動作の違いについて説明します。 全文関連の構成オプションも適用できます。
MeCab パーサーの詳細は、Github の「MeCab : 他の品詞/形態アナライザ」プロジェクトを参照してください。
MeCab パーサープラグインには、mecab
および mecab-ipadic
が必要です。
サポートされている Fedora、Debian および Ubuntu プラットフォーム (システム mecab
バージョンが古すぎる Ubuntu 12.04 を除く) では、MySQL はシステム mecab
インストールがデフォルトの場所にインストールされている場合に、そのインストールに動的にリンクします。 サポートされている他の Unix に似たプラットフォームでは、libmecab.so
は MySQL プラグインディレクトリにある libpluginmecab.so
で静的にリンクされます。mecab-ipadic
は MySQL バイナリに含まれており、
にあります。
MYSQL_HOME
\lib\mecab
ネイティブパッケージ管理ユーティリティ (Fedora、Debian および Ubuntu 上) を使用して mecab
および mecab-ipadic
をインストールするか、ソースから mecab
および mecab-ipadic
をビルドできます。 ネイティブパッケージ管理ユーティリティを使用した mecab
および mecab-ipadic
のインストールの詳細は、Installing MeCab From a Binary Distribution (Optional) を参照してください。 ソースから mecab
および mecab-ipadic
をビルドする場合は、Building MeCab From Source (Optional) を参照してください。
Windows では、libmecab.dll
は MySQL bin
ディレクトリにあります。mecab-ipadic
は
にあります。
MYSQL_HOME
/lib/mecab
MeCab パーサープラグインをインストールおよび構成するには、次のステップを実行します:
MySQL 構成ファイルで、mecab_rc_file
構成オプションを、MeCab の構成ファイルである mecabrc
構成ファイルの場所に設定します。 MySQL とともに配布される MeCab パッケージを使用している場合、mecabrc
ファイルは MYSQL_HOME/lib/mecab/etc/
にあります。
[mysqld] loose-mecab-rc-file=MYSQL_HOME/lib/mecab/etc/mecabrc
loose
接頭辞は option modifier です。 mecab_rc_file
オプションは、MeCaB パーサープラグインがインストールされるまで MySQL によって認識されませんが、MeCaB パーサープラグインをインストールする前に設定する必要があります。 loose
接頭辞を使用すると、認識されない変数が原因でエラーが発生することなく MySQL を再起動できます。
独自の MeCab インストールを使用する場合、またはソースから MeCab をビルドする場合、mecabrc
構成ファイルの場所が異なる可能性があります。
MySQL 構成ファイルとその場所の詳細は、セクション4.2.2.2「オプションファイルの使用」 を参照してください。
また、MySQL 構成ファイルで、最小トークンサイズを 1 または 2 に設定します。これは、MeCab パーサーで使用することをお薦めします。 InnoDB
テーブルの場合、最小トークンサイズは innodb_ft_min_token_size
構成オプションによって定義され、デフォルト値は 3 です。 MyISAM
テーブルの場合、最小トークンサイズは ft_min_word_len
によって定義され、デフォルト値は 4 です。
[mysqld] innodb_ft_min_token_size=1
mecabrc
構成ファイルを変更して、使用するディクショナリを指定します。 MySQL バイナリとともに配布される mecab-ipadic
パッケージには、3 つのディクショナリ (ipadic_euc-jp
、ipadic_sjis
および ipadic_utf-8
) が含まれます。 MySQL とともにパッケージ化された mecabrc
構成ファイルには、次のようなエントリが含まれています:
dicdir = /path/to/mysql/lib/mecab/lib/mecab/dic/ipadic_euc-jp
たとえば、ipadic_utf-8
ディクショナリを使用するには、次のようにエントリを変更します:
dicdir=MYSQL_HOME
/lib/mecab/dic/ipadic_utf-8
独自の MeCab インストールを使用している場合、またはソースから MeCab をビルドしている場合、mecabrc
ファイルのデフォルトの dicdir
エントリはディクショナリとその場所とは異なる可能性があります。
MeCab パーサープラグインのインストール後、mecab_charset
ステータス変数を使用して、MeCab で使用される文字セットを表示できます。 MySQL バイナリで提供される 3 つの MeCab ディクショナリでは、次の文字セットがサポートされます。
ipadic_euc-jp
ディクショナリは、ujis
および eucjpms
文字セットをサポートしています。
ipadic_sjis
ディクショナリは、sjis
および cp932
文字セットをサポートしています。
ipadic_utf-8
ディクショナリは、utf8
および utf8mb4
文字セットをサポートしています。
mecab_charset
では、最初にサポートされている文字セットのみがレポートされます。 たとえば、ipadic_utf-8
ディクショナリは、utf8
と utf8mb4
の両方をサポートしています。このディクショナリが使用されている場合、mecab_charset
は常に utf8
をレポートします。
MySQL を再開します。
MeCab パーサーのプラグインをインストールします:
MeCab パーサープラグインは、INSTALL PLUGIN
構文を使用してインストールされます。 プラグイン名は mecab
で、共有ライブラリ名は libpluginmecab.so
です。 プラグインのインストールの詳細は、セクション5.6.1「プラグインのインストールおよびアンインストール」 を参照してください。
INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';
インストールされると、MeCab パーサープラグインは通常の MySQL の再起動のたびにロードされます。
SHOW PLUGINS
ステートメントを使用して、MeCab パーサープラグインがロードされていることを確認します。
mysql> SHOW PLUGINS;
mecab
プラグインがプラグインのリストに表示されます。
mecab パーサーを使用する FULLTEXT
インデックスを作成するには、CREATE TABLE
、ALTER TABLE
または CREATE INDEX
とともに WITH PARSER ngram
を指定します。
この例では、mecab
FULLTEXT
インデックスを使用したテーブルの作成、サンプルデータの挿入および INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE
テーブルでのトークン化されたデータの表示を示します:
mysql> USE test; mysql> CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,body) WITH PARSER mecab ) ENGINE=InnoDB CHARACTER SET utf8; mysql> SET NAMES utf8; mysql> INSERT INTO articles (title,body) VALUES ('データベース管理','このチュートリアルでは、私はどのようにデータベースを管理する方法を紹介します'), ('データベースアプリケーション開発','データベースアプリケーションを開発することを学ぶ'); mysql> SET GLOBAL innodb_ft_aux_table="test/articles"; mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE ORDER BY doc_id, position;
既存のテーブルに FULLTEXT
インデックスを追加するには、ALTER TABLE
または CREATE INDEX
を使用できます。 例:
CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT ) ENGINE=InnoDB CHARACTER SET utf8; ALTER TABLE articles ADD FULLTEXT INDEX ft_index (title,body) WITH PARSER mecab; # Or: CREATE FULLTEXT INDEX ft_index ON articles (title,body) WITH PARSER mecab;
MeCab パーサーは、クエリー文字列のセパレータとして空白を使用します。 たとえば、MeCab パーサーは、「データベース管理」を「データベース」および「管理」としてトークン化します。
デフォルトでは、MeCab パーサーは、英語のストップワードの短いリストを含むデフォルトのストップワードリストを使用します。 日本語に適用可能なストップワードリストの場合は、独自のストップワードリストを作成する必要があります。 ストップワードリストの作成の詳細は、セクション12.10.4「全文ストップワード」 を参照してください。
自然言語モードの検索では、検索語はトークンの和集合に変換されます。 たとえば、「データベース管理」は「データベース管理」に変換されます。
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('データベース管理' IN NATURAL LANGUAGE MODE);
ブールモード検索の場合、検索語は検索フレーズに変換されます。 たとえば、「データベース管理」は「データベース管理」に変換されます。
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('データベース管理' IN BOOLEAN MODE);
ワイルドカード検索語はトークン化されません。 「データベース管理 *」での検索は、接頭辞「データベース管理」に対して実行されます。
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('データベース*' IN BOOLEAN MODE);
フレーズはトークン化されます。 たとえば、「データベース管理」は「データベース管理」としてトークン化されます。
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('"データベース管理"' IN BOOLEAN MODE);
このセクションでは、ネイティブパッケージ管理ユーティリティを使用してバイナリ配布から mecab
および mecab-ipadic
をインストールする方法について説明します。 たとえば、Fedora では、Yum を使用してインストールを実行できます:
yum mecab-devel
Debian または Ubuntu では、APT インストールを実行できます:
apt-get install mecab apt-get install mecab-ipadic
ソースから mecab
および mecab-ipadic
をビルドする場合、基本的なインストールステップは次のとおりです。 詳細は、MeCab のドキュメントを参照してください。
mecab
および mecab-ipadic
用の tar.gz パッケージを http://taku910.github.io/mecab/#download からダウンロードします。 2016 年 2 月現在、使用可能な最新のパッケージは mecab-0.996.tar.gz
および mecab-ipadic-2.7.0-20070801.tar.gz
です。
mecab
をインストールします:
tar zxfv mecab-0.996.tar cd mecab-0.996 ./configure make make check su make install
mecab-ipadic
をインストールします:
tar zxfv mecab-ipadic-2.7.0-20070801.tar cd mecab-ipadic-2.7.0-20070801 ./configure make su make install
WITH_MECAB
CMake オプションを使用して MySQL をコンパイルします。 mecab
および mecab-ipadic
をデフォルトの場所にインストールした場合は、WITH_MECAB
オプションを system
に設定します。
-DWITH_MECAB=system
カスタムインストールディレクトリを定義した場合は、WITH_MECAB
をカスタムディレクトリに設定します。 例:
-DWITH_MECAB=/path/to/mecab