主博客:
【MySQL精通之路】全文搜索功能-CSDN博客
目录
1.介绍
2.安装MeCab Parser插件
3.创建使用MeCab分析器的FULLTEXT索引
4.MeCab Parser空间处理
5.MeCab分析程序停止字处理
6.MeCab Parser术语搜索
7.MeCab分析程序通配符搜索
8.MeCab语法分析器短语搜索
9.从二进制分布安装MeCab(可选)
10.从源安装MeCab(可选)
1.介绍
内置的MySQL全文解析器使用单词之间的空白作为分隔符来确定单词的开始和结束位置,这在使用不使用单词分隔符的表意语言时是一个限制。为了解决这一限制,MySQL提供了一个MeCab全文解析器插件。支持MeCab全文解析器插件与InnoDB和MyISAM一起使用。
MySQL还提供了一个支持中文、日语和朝鲜语(CJK)的ngram全文解析器插件。有关更多信息,请参阅“ngram全文分析器”。
【MySQL精通之路】全文解析器-ngram-CSDN博客
MeCab全文解析器插件是一个用于日语的全文解析器插件,它将文本序列标记为有意义的单词。例如,MeCab标记化“データベース管理” (“数据库管理”)到“データベース” (“数据库”)和“管理” 经营相比之下,ngram全文解析器将文本标记为n个字符的连续序列,其中n表示1到10之间的数字。
除了将文本标记为有意义的单词外,MeCab索引通常小于ngram索引,并且MeCab全文搜索通常更快。一个缺点是,与ngram全文解析器相比,MeCab全文解析器可能需要更长的时间来标记文档。
第14.9节“全文搜索函数”中描述的全文搜索语法适用于MeCab解析器插件。本节将介绍解析行为的差异。与全文相关的配置选项也适用。
有关MeCab解析器的更多信息,请参阅Github上的MeCab:另一个词性和形态分析器项目。
2.安装MeCab Parser插件
MeCab解析器插件需要MeCab和MeCab ipadic。
在受支持的Fedora、Debian和Ubuntu平台上(除了Ubuntu 12.04,其中系统mecab版本太旧),如果安装到默认位置,MySQL会动态链接到系统mecab安装。
在其他支持的类Unix平台上,libmecab.so静态链接在libpluginmecab.so中,后者位于MySQL插件目录中。
mecab ipadic包含在MySQL二进制文件中,位于MySQL_HOME\lib\mecab中。
您可以使用本地包管理实用程序(在Fedora、Debian和Ubuntu上)安装mecab和mecab ipadic,也可以从源代码构建mecab或mecab ipadic。
有关使用本机软件包管理实用程序安装mecab和mecab ipadic的信息,请参阅9节二进制分发安装mecab(可选)。
如果要从源代码构建mecab和mecab ipadic,请参阅10节源代码创建mecab(可选)。
在Windows上,libmecab.dll位于MySQL bin目录中。mecab ipadic位于MYSQL_HOME/lib/mecab中。
要安装和配置MeCab解析器插件,请执行以下步骤:
1.在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
松散前缀是一个选项修饰符。在安装mecab解析器插件之前,MySQL不会识别mecab_rc_file选项,但在尝试安装mecab解析器插件之前必须设置该选项。松散前缀允许您重新启动MySQL,而不会遇到由于无法识别的变量而导致的错误。
如果您使用自己的MeCab安装,或从源代码构建MeCab,则mecabrc配置文件的位置可能会有所不同。
有关MySQL配置文件及其位置的信息,请参阅“使用配置文件”。
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
3.修改mecabrc配置文件以指定要使用的词典。与MySQL二进制文件一起分发的mecab ipadic包包括三个字典(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二进制文件提供的三个MeCab字典支持以下字符集。
ipadic_euc-jp字典支持uji和eucjpms字符集。
ipadic_sjis字典支持sjis和cp932字符集。
ipadic_utf-8字典支持utf8mb3和utf8mb4字符集。
mecab_charset只报告第一个支持的字符集。例如,ipadic_utf-8字典同时支持utf8mb3和utf8mb4。当使用此词典时,mecab_charset总是报告utf8。
4. 重启MySQL.
5.安装MeCab解析器插件:
MeCab解析器插件是使用INSTALL plugin安装的。插件名称为mecab,共享库名称为libpluginmecb.so。有关安装插件的更多信息,请参阅“安装和卸载插件”。
INSTALL PLUGIN mecab SONAME 'libpluginmecab.so';
一旦安装,MeCab解析器插件会在每次正常的MySQL重启时加载。
验证是否使用SHOW PLUGINS语句加载了MeCab解析器插件。
mysql> SHOW PLUGINS;
mecab插件应该出现在插件列表中。
3.创建使用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 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;
4.MeCab Parser空间处理
MeCab解析器在查询字符串中使用空格作为分隔符。例如,MeCab解析器标记化
データベース管理 as データベース and 管理.
5.MeCab分析程序停止字处理
默认情况下,MeCab解析器使用默认的停止语列表,其中包含英文停止语的短列表。对于适用于日语的停止语列表,您必须创建自己的列表。有关创建停止语列表的信息,请参阅“全文停止语”。
6.MeCab Parser术语搜索
对于自然语言模式的搜索,搜索词被转换为标记的并集。例如データベース管理 转换为データベース 管理.
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);
7.MeCab分析程序通配符搜索
通配符搜索项未标记化。上的搜索データベース管理* 对前缀执行,データベース管理.
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('データベース*' IN BOOLEAN MODE);
8.MeCab语法分析器短语搜索
短语被标记。例如データベース管理 标记为データベース 管理.
SELECT COUNT(*) FROM articles WHERE MATCH(title,body) AGAINST('"データベース管理"' IN BOOLEAN MODE);
9.从二进制分布安装MeCab(可选)
本节介绍如何使用本机包管理实用程序从二进制发行版安装mecab和mecab ipadic。例如,在Fedora上,您可以使用Yum执行安装:
yum mecab-devel
在Debian或Ubuntu上,您可以执行APT安装:
apt-get install mecab
apt-get install mecab-ipadic
10.从源安装MeCab(可选)
如果你想从源代码构建mecab和mecab ipadic,下面提供了基本的安装步骤。有关更多信息,请参阅MeCab文档。
1.从下载适用于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。
2.安装mecab:
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.使用WITH_MECAB CMake选项编译MySQL。如果您已将MECAB和MECAB ipadic安装到默认位置,请将WITH_MECAB选项设置为system。
-DWITH_MECAB=system
如果定义了自定义安装目录,请将WITH_MECAB设置为自定义目录。例如
-DWITH_MECAB=/path/to/mecab