# 12.10.9 MeCab 全文解析器插件
内置的 MySQL 全文解析器使用单词之间的空白作为分隔符来确定单词的开始和结束位置,这是使用不使用单词分隔符的表意语言时的限制。为了解决日语的这个限制,MySQL 提供了一个 MeCab 全文解析器插件。MeCab 全文解析器插件支持与InnoDB
和MyISAM
.
笔记
MySQL 还提供了一个支持日语的 ngram 全文解析器插件。有关详细信息,请参阅第 12.10.8 节,“ngram 全文解析器”.
MeCab 全文解析器插件是用于日语的全文解析器插件,可将文本序列标记为有意义的单词。例如,MeCab 将“データベース管理”(“数据库管理”)标记为“データベース”(“数据库”)和“管理”(“管理”)。相比之下,格拉姆全文解析器将文本标记为连续的序列*n
字符,在哪里n
*表示 1 到 10 之间的数字。
除了将文本标记为有意义的单词之外,MeCab 索引通常比 ngram 索引小,而且 MeCab 全文搜索通常更快。一个缺点是,与 ngram 全文解析器相比,MeCab 全文解析器可能需要更长的时间来标记文档。
全文搜索语法第 12.10 节,“全文搜索功能”适用于 MeCab 解析器插件。本节描述了解析行为的差异。全文相关的配置选项也适用。
有关 MeCab 解析器的更多信息,请参阅MeCab:又一个词性和形态分析仪 (opens new window)Github 上的项目。
# 安装 MeCab 解析器插件
MeCab 解析器插件需要机车
和mecab-ipadic
.
在受支持的 Fedora、Debian 和 Ubuntu 平台上(除了 Ubuntu 12.04 系统机车
版本太旧),MySQL动态链接系统机车
如果安装到默认位置,则进行安装。在其他受支持的类 Unix 平台上,libmecab.so
静态链接在libpluginmecab.so
,它位于 MySQL 插件目录中。mecab-ipadic
包含在 MySQL 二进制文件中,位于*
MYSQL_HOME*\lib\mecab
.
你可以安装机车
和mecab-ipadic
使用本机包管理实用程序(在 Fedora、Debian 和 Ubuntu 上),或者您可以构建机车
和mecab-ipadic
从源头。有关安装的信息机车
和mecab-ipadic
使用本机包管理实用程序,请参阅从二进制发行版安装 MeCab(可选).如果你想建机车
和mecab-ipadic
从源头看从源代码构建 MeCab(可选).
在 Windows 上,libmecab.dll
在 MySQL 中找到斌
目录。mecab-ipadic
位于*
MYSQL_HOME*/lib/mecab
.
要安装和配置 MeCab 解析器插件,请执行以下步骤:
在 MySQL 配置文件中,设置
mecab_rc_file
配置选项的位置麦卡布
配置文件,即 MeCab 的配置文件。如果您使用的是随 MySQL 分发的 MeCab 包,则麦卡布
文件位于MYSQL_HOME/lib/mecab/etc/
.[mysqld] loose-mecab-rc-file=MYSQL_HOME/lib/mecab/etc/mecabrc
这个
释放
前缀是一个选项修饰符这个mecab_rc_文件
在安装MeCaB解析器插件之前,MySQL不会识别该选项,但必须在尝试安装MeCaB解析器插件之前设置该选项。这个释放
prefix允许您重新启动MySQL,而不会因为无法识别的变量而遇到错误。如果您使用自己的MeCab安装,或从源代码构建MeCab,则
麦卡布克
配置文件可能不同。有关MySQL配置文件及其位置的信息,请参阅第4.2.2.2节,“使用选项文件”.
同样在MySQL配置文件中,将最小令牌大小设置为1或2,这是MeCab解析器建议使用的值。对于
InnoDB
表中,最小令牌大小由innodb_ft_min_令牌_大小
配置选项,默认值为3。对于米萨姆
表中,最小令牌大小由ft_min_word_len
,其默认值为4。[mysqld] innodb_ft_min_token_size=1
修改
麦卡布克
用于指定要使用的词典的配置文件。这个mecab ipadic
使用MySQL二进制文件分发的包包括三个字典(ipadic_euc-jp
,ipadic_sjis
和ipadic_utf-8
).这个麦卡布克
使用MySQL打包的配置文件包含以下内容:dicdir = /path/to/mysql/lib/mecab/lib/mecab/dic/ipadic_euc-jp
使用
ipadic_utf-8
例如,dictionary可按如下方式修改条目:dicdir=MYSQL_HOME/lib/mecab/dic/ipadic_utf-8
如果您正在使用自己的MeCab安装或从源代码构建MeCab,则默认
迪迪尔
进入麦卡布克
文件可能会有所不同,词典和它们的位置也会有所不同。笔记
安装MeCab解析器插件后,可以使用
mecab_charset
状态变量,以查看MeCab使用的字符集。MySQL二进制文件提供的三个MeCab字典支持以下字符集。这个
ipadic_euc-jp
字典支持乌伊斯
和eucjpms
角色集。这个
ipadic_sjis
字典支持sjis
和cp932
角色集。这个
ipadic_utf-8
字典支持utf8
和utf8mb4
角色集。
mecab_charset
仅报告第一个支持的字符集。例如ipadic_utf-8
字典同时支持这两种功能utf8
和utf8mb4
.mecab_charset
总是报告utf8
当这本字典在使用时。重启MySQL。
安装MeCab解析器插件:
MeCab解析器插件是使用
安装插件
语法。插件名为麦卡布
,共享库名称为libpluginmecab。所以
。有关安装插件的更多信息,请参阅第5.6.1节,“安装和卸载插件”.INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';
一旦安装,MeCab解析器插件会在每次正常的MySQL重启时加载。
验证是否使用
显示插件
陈述mysql> SHOW PLUGINS;
A.
麦卡布
插件应该出现在插件列表中。
# 创建使用MeCab解析器的全文索引
创建一个全文
使用mecab解析器的索引,请指定使用语法分析器ngram
具有创建表格
, 改变桌子
或创建索引
.
此示例演示如何使用麦卡布
全文
索引,插入样本数据,并在信息模式。INNODB_FT_INDEX_缓存
表:
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;
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解析器通配符搜索
通配符搜索词没有标记化。搜索データベース管理*isperformed on the prefix,数据库管理。
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('データベース*' IN BOOLEAN MODE);
# MeCab Parser Phrase Search
Phrases are tokenized. 数据库管理istokenized as数据库管理。
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('"データベース管理"' IN BOOLEAN MODE);
# Installing MeCab From a Binary Distribution (Optional)
This section describes how to install mecab
and mecab-ipadic
from a binary distribution using a native package management utility. For example, on Fedora, you can use Yum to perform the installation:
yum mecab-devel
On Debian or Ubuntu, you can perform an APT installation:
apt-get install mecab
apt-get install mecab-ipadic
# Installing MeCab From Source (Optional)
If you want to build mecab
and mecab-ipadic
from source, basic installation steps are provided below. For additional information, refer to the MeCab documentation.
Download the tar.gz packages for
mecab
andmecab-ipadic
from http://taku910.github.io/mecab/#download (opens new window). As of February, 2016, the latest available packages aremecab-0.996.tar.gz
andmecab-ipadic-2.7.0-20070801.tar.gz
.Install
麦卡布
: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
使用
与_MECAB
CMake选项。设定与_MECAB
选择系统
如果你已经安装了麦卡布
和mecab ipadic
到默认位置。-DWITH_MECAB=system
如果定义了自定义安装目录,请设置
与_MECAB
转到自定义目录。例如:-DWITH_MECAB=/path/to/mecab