MeCab全文分析器插件
内置的MySQL全文分析器使用单词之间的空白作为定界符来确定单词的开始和结束位置,这在使用不使用单词定界符的表意语言时是一个限制。为了解决日语的这一限制,MySQL提供了MeCab全文分析器插件。支持MeCab全文分析器插件与InnoDB
和一起使用MyISAM
。
注意MySQL还提供了一个支持日语的ngram全文分析器插件。有关更多信息,请参见“ ngram全文分析器”。
MeCab全文分析器插件是日语的全文分析器插件,可将一系列文本标记化为有意义的单词。例如,MeCab将“データベース管理”(“数据库管理”)标记化为“データベース”(“数据库”)和“管理”(“管理”)。相比之下, ngram全文分析器将文本标记为连续的n
字符序列,其中n
代表到10之间的数字。
除了将文本标记为有意义的单词外,MeCab索引通常比ngram索引小,而MeCab全文搜索通常更快。一个缺点是,与ngram全文语法分析器相比,MeCab全文语法分析器对文档进行标记化可能需要更长的时间。
“全文搜索功能”中描述的全文搜索语法适用于MeCab解析器插件。本节介绍了解析行为的差异。全文相关的配置选项也适用。
有关MeCab解析器的其他信息,请参阅Github上的 MeCab:语音和词法分析器的另一个部分。
安装MeCab Parser插件
MeCab解析器插件需要mecab
和mecab-ipadic
。
在受支持的Fedora,Debian和Ubuntu平台(系统mecab
版本过旧的Ubuntu 12.04除外)上,mecab
如果将MySQL 安装到默认位置,则MySQL动态链接到系统安装。在其他受支持的类似于Unix的平台上,libmecab.so
静态链接到libpluginmecab.so
位于MySQL插件目录中的。mecab-ipadic
包含在MySQL二进制文件中,位于中MYSQL_HOME\lib\mecab
。
您可以安装mecab
和mecab-ipadic
使用本机软件包管理实用程序(在Fedora,Debian和Ubuntu上),也可以从源代码进行构建mecab
和构建mecab-ipadic
。有关安装mecab
和mecab-ipadic
使用本机软件包管理实用程序的信息,请参阅从二进制分发版安装MeCab(可选)。如果你想建立mecab
和mecab-ipadic
从源代码,看到大厦仲裁处从源代码(可选)。
在Windows上,libmecab.dll
位于MySQL bin
目录中。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_rc_file
安装了MeCaB解析器插件之前,MySQL无法识别该选项,但是必须在尝试安装MeCaB解析器插件之前将其设置。该loose
前缀允许你重启MySQL没有遇到错误的,由于无法识别的变量。如果您使用自己的MeCab安装或从源代码构建MeCab,则
mecabrc
配置文件的位置可能会有所不同。有关MySQL配置文件及其位置的信息,请参见“使用选项文件”。
同样在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
)。mecabrc
与MySQL打包在一起的配置文件包含和类似于以下内容的条目: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
词典支持utf8
和utf8mb4
字符集。
mecab_charset
仅报告第一个支持的字符集。例如,ipadic_utf-8
字典同时支持utf8
和utf8mb4
。mecab_charset
始终utf8
在使用此词典时报告。- 该
- 重新启动MySQL。
安装MeCab解析器插件:
MeCab解析器插件是使用
INSTALL PLUGIN
语法安装的。插件名称为mecab
,共享库名称为libpluginmecab.so
。有关安装插件的更多信息,请参见“MySQL服务器插件”。INSTALL PLUGIN mecabSONAME 'libpluginmecab.so';安装后,MeCab解析器插件会在每次正常的MySQL重新启动时加载。
使用以下
SHOW PLUGINS
语句验证是否已加载MeCab解析器插件。mysql>
SHOW PLUGINS ;一个
mecab
插件应该出现在插件列表。
创建使用MeCab解析器的FULLTEXT索引
要创建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 INTUNSIGNED AUTO_INCREMENT NOT NULLPRIMARY KEY , title VARCHAR(200), body TEXT,FULLTEXT (title,body)WITH PARSER mecab )ENGINE =InnoDBCHARACTER 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_CACHEORDER BY doc_id, position;
要将FULLTEXT
索引添加到现有表中,可以使用ALTER TABLE
或CREATE INDEX
。例如:
CREATE TABLE articles ( id INTUNSIGNED AUTO_INCREMENT NOT NULLPRIMARY KEY , title VARCHAR(200), body TEXT )ENGINE =InnoDBCHARACTER SET utf8;ALTER TABLE articlesADD FULLTEXT INDEX ft_index (title,body)WITH PARSER mecab; # Or:CREATE FULLTEXT INDEX ft_indexON articles (title,body)WITH PARSER mecab;
MeCab解析器空间处理
MeCab解析器使用空格作为查询字符串中的分隔符。例如,MeCab解析器将データベース管理化为データベース和管理。
MeCab解析器停用词处理
默认情况下,MeCab解析器使用默认停用词列表,其中包含英语停用词的简短列表。对于适用于日语的停用词列表,您必须创建自己的停用词列表。有关创建停用词列表的信息,请参见“全文停用词”。
MeCab Parser术语搜索
对于自然语言模式搜索,搜索词将转换为令牌的并集。例如,データベース管理被转换为データベース管理。
SELECT COUNT(*)FROM articlesWHERE MATCH(title,body)AGAINST ('データベース管理'IN NATURAL LANGUAGE MODE );
对于布尔模式搜索,搜索项将转换为搜索短语。例如,データベース管理被转换为データベース管理。
SELECT COUNT(*)FROM articlesWHERE MATCH(title,body)AGAINST ('データベース管理'IN BOOLEANMODE );
MeCab Parser通配符搜索
通配符搜索词未标记。在前缀デーデース管理上执行performed ータベース管理*的搜索。
SELECT COUNT(*)FROM articlesWHERE MATCH(title,body)AGAINST ('データベース*'IN BOOLEANMODE );
MeCab解析器短语搜索
短语被标记化。例如,データベース管理被标记为データベース管理。
SELECT COUNT(*)FROM articlesWHERE MATCH(title,body)AGAINST ('"データベース管理"'IN BOOLEANMODE );
从二进制发行版安装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文档。
- 下载的tar.gz包
mecab
,并mecab-ipadic
从 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 。将WITH_MECAB
选项设置为(system
如果已安装)mecab
和mecab-ipadic
默认位置。-DWITH_MECAB=system
如果定义了定制安装目录,请设置
WITH_MECAB
为定制目录。例如:-DWITH_MECAB=/path/to/mecab