【MySQL精通之路】全文搜索(9)-全文解析器-MeCab

主博客:

【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全文解析器插件InnoDBMyISAM一起使用。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/17316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts学习篇

一、使用echarts 1.引入 Apache ECharts <!DOCTYPE html> <html> <head> <meta charset"utf-8" /> <!-- 引入刚刚下载的 ECharts 文件 --> <script src"echarts.js"></script> </head> </html> 2.…

深度神经网络——什么是自动编码器?

自动编码器 自动编码器&#xff08;Autoencoders&#xff09;是无监督学习领域中一种重要的神经网络架构&#xff0c;它们主要用于数据压缩和特征学习。 自动编码器的定义&#xff1a; 自动编码器是一种无监督机器学习算法&#xff0c;它通过反向传播进行训练&#xff0c;目标…

【夏之以寒-Kafka专栏 02】什么情况下会发生 QueueFullException?

作者名称&#xff1a;夏之以寒 作者简介&#xff1a;专注于Java和大数据领域&#xff0c;致力于探索技术的边界&#xff0c;分享前沿的实践和洞见 文章专栏&#xff1a;夏之以寒-kafka专栏 专栏介绍&#xff1a;本专栏旨在以浅显易懂的方式介绍Kafka的基本概念、核心组件和使用…

2023山东ICPC省赛Problem B.建筑公司(拓扑排序)

2023 山东 I C P C 省赛 P r o b l e m B . 建筑公司 \Huge{2023山东ICPC省赛Problem B.建筑公司} 2023山东ICPC省赛ProblemB.建筑公司 文章目录 题意思路标程 比赛链接&#xff1a;Dashboard - The 13th Shandong ICPC Provincial Collegiate Programming Contest - Codeforce…

OWASP top10--SQL注入(三、手工注入)

目录 access数据库 手工注入过程&#xff1a; 猜解数据库表名 猜解数据库表名里面的字段 猜解字段内容 SQL注入中的高级查询 mssql数据库 手工注入过程&#xff1a; sa权限 ​编辑dbowner权限 public权限 mysql数据库 1、对服务器文件进行读写操作(前提条件) 需要知…

文刻创作ai工具官网免费工具

文刻创作ai工具官网免费工具 Docshttps://iimenvrieak.feishu.cn/docx/O0UedptjbonN4UxyEy7cPlZknYc 文刻是一种可以帮助用户进行创作的AI工具。 它使用自然语言处理和机器学习技术&#xff0c;可以生成文章、故事、诗歌等文本内容。 用户可以通过输入一些关键词或指定一定的…

浙江大学数据结构MOOC-课后习题-第七讲-图4 哈利·波特的考试

题目汇总 浙江大学数据结构MOOC-课后习题-拼题A-代码分享-2024 题目描述 代码展示 照着教程视频来的&#xff0c;没啥好说的捏 #include <cstdlib> #include <iostream>#define MAXSIZE 100 #define IFINITY 65535 typedef int vertex; typedef int weightType;/…

为什么大部分新手做抖音小店赚不到钱?

大家好&#xff0c;我是喷火龙。 今天来给大家聊聊&#xff0c;为什么大部分新手做抖店赚不到钱&#xff1f; 不知道大家想过这个问题没有&#xff0c;可能有些人把赚不到钱的原因归结于市场、或者平台、又或者运营技术以及做店经验。 但我觉得这些都不是重点&#xff0c;重…

FFmpeg 使用文档介绍二:命令行选项

关于FFmpeg的细节描述可以参考:FFmpeg 使用文档介绍一:细节描述和流选择 命令行选项 所有数值选项,除非另有说明,都接受一个表示数字的字符串作为输入,该字符串后面可以跟一个国际单位制(SI)的单位前缀,例如:‘K’(千)、‘M’(兆)或’G’(吉)。 如果将i附加到S…

爬虫实战教程:深入解析配乐网站爬取1000首MP3

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、实战前准备 1. 选择目标网站 2. 分析网页结构 三、爬虫工作流程详解 1. 发…

高质量软件开发的全面指南(MIT-6.031)

首先&#xff0c;通过静态检查&#xff08;Static Checking&#xff09;和动态检查&#xff08;Dynamic Checking&#xff09;了解类型和变量的使用规则&#xff0c;学习如何编写文档和注释来记录假设和方法&#xff08;Assumptions and Methods&#xff09;。详细内容请见&…

Curator Framework如何写单元测试

概述 使用curator framework框架去操作zookeeper时&#xff0c;我们知道因其的方法风格是那种流式的编写风格&#xff0c;所以我们在写单元测试的时候要把链接zookeeper的操作给mock掉&#xff0c;那么着实是不太好写单测。不过好在curator framework有一个专门用于测试的模块…

诚心分享!主食冻干横向对比:希喂、爱立方、K9等谁最值得入手?

主食冻干到底有必要喂吗&#xff1f;七年铲龄铲屎官告诉你&#xff0c;是真的很有必要喂&#xff01; 这些年随着宠物经济的发展、科学养宠的普及&#xff0c;现在养猫不仅局限在让猫吃饱就行&#xff0c;更多人开始关注到猫的饮食健康。大量的实际喂养案例证明了&#xff0c;传…

第2章 物理层

王道学习 考纲内容 &#xff08;一&#xff09;通信基础 信道、信号、带宽、码元、波特、速率、信源与信宿等基本概念&#xff1b; 奈奎斯特定理与香农定理&#xff1b;编码与调制&#xff1b; 电路交换、报文交换与分组交换&#xff1b;数…

接口响应断言-json

json认识JSONPath源码类学习/json串的解析拓展学习 目的&#xff1a;数据返回值校验测试 json认识 json是什么-是一种数据交换格式&#xff0c;举例平时看到的json图2&#xff0c;在使用中查看不方便&#xff0c;会有格式转化的平台&#xff0c;json格式的展示 JSON在线视图…

推荐二轮电动车仪表盘蓝牙主芯片方案-HS6621CGC

随着国内二轮电动车的火热开启&#xff0c;电动车的智能化程度越来越高&#xff1b;电动车的智能操控需求也越来越高&#xff0c;现在介绍蓝牙控制面板的一些功能&#xff1b;例如&#xff1a;定位&#xff08;GNSS&#xff09;&#xff0c;设防&#xff0c;实时上报数据&#…

rocketmq跨版本升级方案参考—— 筑梦之路

这篇文章写的比较好&#xff0c;可以作为参考&#xff0c;抽空再来按照这个思路进行实践实验。 https://www.cnblogs.com/zhyg/p/10132598.html 对于rocketmq和kafka如何选择&#xff0c;可阅读搭建项目 Kafka 和 RocketMQ 你选哪个&#xff1f;

什么是光栅化?

一、 什么是光栅化? 光栅化作用是将几何数据变换后转换为像素呈现在显示设备上的一个过程。几何数据转换为像素&#xff0c; 本质是坐标变换、几何离散化&#xff0c;如下&#xff1a; 其中包含了坐标变换和几何离散化&#xff1a; 二、光栅化完成了什么 3D中&#xff0c;物…

element-ui 实现输入框下拉树组件(2024-05-23)

用element-ui的 el-input&#xff0c;el-tree&#xff0c;el-popover组件组合封装 import url("//unpkg.com/element-ui2.15.14/lib/theme-chalk/index.css"); <script src"//unpkg.com/vue2/dist/vue.js"></script> <script src"//…

枣庄高防服务器如何实现全球覆盖?

利用 枣庄高防服务器如何实现全球覆盖&#xff1f; 嗨&#xff0c;亲爱的读者们&#xff01;今天我们将带你探索如何利用枣庄高防服务器实现全球覆盖&#xff0c;让你的网站在世界各地都能稳定快速地访问。而我们这次推荐的服务器商是莱卡云&#xff08;Lcayun&#xff09;&am…