# 12.10.9 MeCab 全文解析器插件

内置的 MySQL 全文解析器使用单词之间的空白作为分隔符来确定单词的开始和结束位置,这是使用不使用单词分隔符的表意语言时的限制。为了解决日语的这个限制,MySQL 提供了一个 MeCab 全文解析器插件。MeCab 全文解析器插件支持与InnoDBMyISAM.

笔记

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 解析器插件,请执行以下步骤:

  1. 在 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节,“使用选项文件”.

  2. 同样在MySQL配置文件中,将最小令牌大小设置为1或2,这是MeCab解析器建议使用的值。对于InnoDB表中,最小令牌大小由innodb_ft_min_令牌_大小配置选项,默认值为3。对于米萨姆表中,最小令牌大小由ft_min_word_len,其默认值为4。

    [mysqld]
    innodb_ft_min_token_size=1
    
  3. 修改麦卡布克用于指定要使用的词典的配置文件。这个mecab ipadic使用MySQL二进制文件分发的包包括三个字典(ipadic_euc-jp, ipadic_sjisipadic_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字典支持sjiscp932角色集。

    • 这个ipadic_utf-8字典支持utf8utf8mb4角色集。

    mecab_charset仅报告第一个支持的字符集。例如ipadic_utf-8字典同时支持这两种功能utf8utf8mb4. mecab_charset总是报告utf8当这本字典在使用时。

  4. 重启MySQL。

  5. 安装MeCab解析器插件:

    MeCab解析器插件是使用安装插件语法。插件名为麦卡布,共享库名称为libpluginmecab。所以。有关安装插件的更多信息,请参阅第5.6.1节,“安装和卸载插件”.

    INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';
    

    一旦安装,MeCab解析器插件会在每次正常的MySQL重启时加载。

  6. 验证是否使用显示插件陈述

    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);

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.

  1. Download the tar.gz packages for mecab and mecab-ipadic from http://taku910.github.io/mecab/#download (opens new window). As of February, 2016, the latest available packages are mecab-0.996.tar.gz and mecab-ipadic-2.7.0-20070801.tar.gz.

  2. Install 麦卡布:

    tar zxfv mecab-0.996.tar
    cd mecab-0.996
    ./configure
    make
    make check
    su
    make install
    
  3. 安装mecab ipadic:

    tar zxfv mecab-ipadic-2.7.0-20070801.tar
    cd mecab-ipadic-2.7.0-20070801
    ./configure
    make
    su
    make install
    
  4. 使用与_MECABCMake选项。设定与_MECAB选择系统如果你已经安装了麦卡布mecab ipadic到默认位置。

    -DWITH_MECAB=system
    

    如果定义了自定义安装目录,请设置与_MECAB转到自定义目录。例如:

    -DWITH_MECAB=/path/to/mecab