このページは機械翻訳したものです。
組込みの 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 および 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/mecabrcloose接頭辞は 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 インデックスの作成
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 パーサーは、「データベース管理」を「データベース」および「管理」としてトークン化します。
MeCab パーサーのストップワード処理
デフォルトでは、MeCab パーサーは、英語のストップワードの短いリストを含むデフォルトのストップワードリストを使用します。 日本語に適用可能なストップワードリストの場合は、独自のストップワードリストを作成する必要があります。 ストップワードリストの作成の詳細は、セクション12.10.4「全文ストップワード」 を参照してください。
MeCab パーサー用語検索
自然言語モードの検索では、検索語はトークンの和集合に変換されます。 たとえば、「データベース管理」は「データベース管理」に変換されます。
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);
MeCab パーサーのワイルドカード検索
ワイルドカード検索語はトークン化されません。 「データベース管理 *」での検索は、接頭辞「データベース管理」に対して実行されます。
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('データベース*' IN BOOLEAN MODE);
MeCab パーサーフレーズ検索
フレーズはトークン化されます。 たとえば、「データベース管理」は「データベース管理」としてトークン化されます。
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('"データベース管理"' IN BOOLEAN MODE);
バイナリ配布からの MeCab のインストール (オプション)
このセクションでは、ネイティブパッケージ管理ユーティリティを使用してバイナリ配布から mecab および mecab-ipadic をインストールする方法について説明します。 たとえば、Fedora では、Yum を使用してインストールを実行できます:
yum mecab-devel
Debian または Ubuntu では、APT インストールを実行できます:
apt-get install mecab
apt-get install mecab-ipadic
ソースからの MeCab のインストール (オプション)
ソースから 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_MECABCMake オプションを使用して MySQL をコンパイルします。mecabおよびmecab-ipadicをデフォルトの場所にインストールした場合は、WITH_MECABオプションをsystemに設定します。-DWITH_MECAB=systemカスタムインストールディレクトリを定義した場合は、
WITH_MECABをカスタムディレクトリに設定します。 例:-DWITH_MECAB=/path/to/mecab