内置的 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:Yet Another Part-of-Speech and Morphological Analyzer项目。
安装 MeCab 解析器插件
MeCab 解析器插件需要mecab
和
mecab-ipadic
.
在支持的Fedora、Debian和Ubuntu平台上(Ubuntu 12.04系统版本过旧除外),如果MySQL安装到默认位置,则mecab
动态链接到系统
安装。mecab
在其他支持的类 Unix 平台上,
libmecab.so
静态链接在
libpluginmecab.so
MySQL 插件目录中。mecab-ipadic
包含在 MySQL 二进制文件中,位于
.
MYSQL_HOME
\lib\mecab
您可以安装mecab
和
使用本机包管理实用程序(在 Fedora、Debian 和 Ubuntu 上),也
mecab-ipadic
可以从源代码构建。有关安装和
使用本机包管理实用程序的信息,请参阅
从二进制分发版安装 MeCab(可选)。如果您想
从源代码构建 MeCab ,
请参阅从源代码
构建 MeCab(可选)。
mecab
mecab-ipadic
mecab
mecab-ipadic
mecab
mecab-ipadic
在 Windows 上,libmecab.dll
位于 MySQLbin
目录中。
mecab-ipadic
位于
。
MYSQL_HOME
/lib/mecab
要安装和配置 MeCab 解析器插件,请执行以下步骤:
在MySQL配置文件中,将
mecab_rc_file
配置选项设置为配置文件所在位置mecabrc
,即MeCab的配置文件。如果您使用的是随 MySQL 一起分发的 MeCab 包,则该mecabrc
文件位于MYSQL_HOME/lib/mecab/etc/
.[mysqld] loose-mecab-rc-file=MYSQL_HOME/lib/mecab/etc/mecabrc
loose
前缀是一个 选项修饰符 。在安装 MeCaB 解析器插件之前,MySQL 无法识别该mecab_rc_file
选项,但必须在尝试安装 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
配置文件以指定您要使用的字典。mecab-ipadic
与 MySQL 二进制文件一起分发的 包包括三个字典(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,
dicdir
则文件中的默认条目mecabrc
可能不同,字典及其位置也可能不同。笔记安装 MeCab 解析器插件后,您可以使用
mecab_charset
状态变量查看 MeCab 使用的字符集。MySQL 二进制文件提供的三个 MeCab 词典支持以下字符集。ipadic_euc-jp
字典支持ujis
和eucjpms
字符集 。ipadic_sjis
字典支持sjis
和cp932
字符集 。ipadic_utf-8
字典支持utf8mb3
和utf8mb4
字符集 。
mecab_charset
只报告第一个支持的字符集。例如,ipadic_utf-8
字典同时支持utf8mb3
和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 解析器的全文索引
要创建使用 mecab 解析器的索引,
FULLTEXT
请指定WITH PARSER ngram
、
或
。
CREATE TABLE
ALTER TABLE
CREATE INDEX
此示例演示如何创建带
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 utf8mb4;
mysql> SET NAMES utf8mb4;
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 utf8mb4;
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 解析器将 de ータベース 管理标记为 deータベース和 管理。
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 文档。
从 http://taku910.github.io/mecab/#download
mecab
下载 tar.gz 包。截至 2016 年 2 月,最新的可用软件包是 和 .mecab-ipadic
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 。将WITH_MECAB
选项设置为system
是否已安装mecab
并mecab-ipadic
设置为默认位置。-DWITH_MECAB=system
如果您定义了自定义安装目录,请设置
WITH_MECAB
为自定义目录。例如:-DWITH_MECAB=/path/to/mecab