当前位置: 首页 > news >正文

【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

相关文章:

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

主博客: 【MySQL精通之路】全文搜索功能-CSDN博客 目录 1.介绍 2.安装MeCab Parser插件 3.创建使用MeCab分析器的FULLTEXT索引 4.MeCab Parser空间处理 5.MeCab分析程序停止字处理 6.MeCab Parser术语搜索 7.MeCab分析程序通配符搜索 8.MeCab语法分析器短语…...

【工具】 MyBatis Plus的SQL拦截器自动翻译替换“?“符号为真实数值

【工具】 MyBatis Plus的SQL拦截器自动翻译替换"?"符号为真实数值 使用MyBatis的配置如下所示: mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl调用接口,sql日志打印如下: 参数和sql语句不…...

RT-DETR:端到端的实时Transformer检测模型(目标检测+跟踪)

博主一直一来做的都是基于Transformer的目标检测领域,相较于基于卷积的目标检测方法,如YOLO等,其检测速度一直为人诟病。 终于,RT-DETR横空出世,在取得高精度的同时,检测速度也大幅提升。 那么RT-DETR是如…...

OrangePi Kunpeng Pro开发板初体验——家庭小型服务器

引言 在开源硬件的浪潮中,开发板作为创新的基石,正吸引着全球开发者的目光。它们不仅为技术爱好者提供了实验的平台,更为专业开发者带来了实现复杂项目的可能性。本文将深入剖析OrangePi Kunpeng Pro开发板,从开箱到实际应用&…...

AquaCrop农业水资源管理,模拟作物生长过程中水分的需求与消耗

AquaCrop是由世界粮食及农业组织(FAO)开发的一个先进模型,旨在研究和优化农作物的水分生产效率。这个模型在全球范围内被广泛应用于农业水管理,特别是在制定农作物灌溉计划和应对水资源限制方面显示出其强大的实用性。AquaCrop 不…...

爬虫之re数据清洗

文章目录 一、正则【Regular】二、重要语法1、获取内容: 左边(.*?)右边2、替换数据: re.sub(源数据|源数据, 目标数据, 字符串) 一、正则【Regular】 概念: 根据程序员的指示, 从<字符串>中提取数据 结果: 列表 使用频率: 正则跟xpath相比, 正则是弟弟 二、重要语法 …...

惯性动作捕捉与数字人实时交互/运营套装,对高校元宇宙实训室有何作用?

惯性动作捕捉与数字人实时交互/运营套装&#xff0c;可以打破时空限制&#xff0c;通过动捕设备写实数字人软件系统动捕设备系统定制化数字人短视频渲染平台&#xff0c;重塑课程教学方式&#xff0c;开展元宇宙沉浸式体验教学活动和参观交流活动。 写实数字人软件系统内置丰富…...

Leecode---栈---每日温度 / 最小栈及栈和队列的相互实现

栈&#xff1a;先入后出&#xff1b;队列&#xff1a;先入先出 一、每日温度 Leecode—739题目&#xff1a; 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温…...

Linux系统编程——动静态库

目录 一&#xff0c;关于动静态库 1.1 什么是库&#xff1f; 1.2 认识动静态库 1.3 动静态库特征 二&#xff0c;静态库 2.1 制作静态库 2.2 使用静态库 三&#xff0c;动态库 3.1 制作动态库 3.2 使用动态库一些问题 3.3 正确使用动态库三种方法 3.3.1 方法一&…...

json formatter哪个好用

在众多的JSON Formatter工具中&#xff0c;确实有几个相当出色的选择&#xff0c;它们各自拥有独特的特点和优势&#xff0c;可以满足不同用户群体的需求。下面就来为大家推荐几个好用的JSONFormatter工具&#xff1a; 1. JSON Formatter & Validator&#xff1a;这款工具…...

react的hooks是什么意思

React Hooks 是 React 16.8 版本引入的一个新特性&#xff0c;它允许你在不编写类组件的情况下使用状态和其他React特性。Hooks使得函数组件变得更加灵活和强大&#xff0c;因为你可以在其中添加状态逻辑、生命周期方法以及其他React功能。 在传统的React类组件中&#xff0c;…...

AVFrame相关接口(函数)

分配和释放 分配 AVFrame AVFrame *av_frame_alloc(void); 分配一个新的 AVFrame 并返回一个指向它的指针。返回的 AVFrame 需要手动释放。 释放 AVFrame void av_frame_free(AVFrame **frame); 释放由 av_frame_alloc 分配的 AVFrame。这个函数会释放帧的数据并将指针设为 …...

低代码与人工智能的深度融合:行业应用的广泛前景

引言 在当今快速变化的数字化时代&#xff0c;企业面临着越来越多的挑战和机遇。低代码平台和人工智能技术的兴起&#xff0c;为企业提供了新的解决方案&#xff0c;加速了应用开发和智能化转型的步伐。 低代码平台的基本概念及发展背景 低代码平台是一种软件开发方法&#x…...

嵌入式测试基础知识

1.白盒测试也称为结构测试&#xff0c;主要用于检测软件编码过程中的错误。 2.黑盒测试又称为功能测试&#xff0c;主要检测软件的每一个功能是否能够正常使用。 3.软件测试流程&#xff1a;根据测试需求编写测试计划、方案&#xff0c;测试用例&#xff0c;做测试分析&#…...

基于网关的ip频繁访问web限制

一、前言 外部ip对某一个web进行频繁访问&#xff0c;有可能是对web进行攻击&#xff0c;现在提供一种基于网关的ip频繁访问web限制策略&#xff0c;犹如带刀侍卫&#xff0c;审查异常身份人员。如发现异常或者暴力闯关者&#xff0c;即可进行识别管制。 二、基于网关的ip频繁访…...

GSM信令流程(附着、去附着、PDP激活、修改流程)

1、联合附着流程 附着包括身份认证、鉴权等 2、去附着流程 用户发起去附着 SGSN发起去附着 HLR发起去附着 GSSN使用S4发起去附着 3、Activation Procedures(PDP激活流程) 4、PDP更新或修改流程 5、Deactivate PDP Context 6、RAU(Routeing Area Update)流程 7、鉴权加…...

OAK相机如何将 YOLOv10 模型转换成 blob 格式?

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是Ashely。 专…...

【Python】解决Python报错:AttributeError: ‘class‘ object has no attribute ‘xxx‘

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…...

反思 GTC 和 OFC 2024:没有一刀切的方法,但上市时间是关键!

在GTC 2024期间&#xff0c;英伟达宣布了最新的Blackwell B200张量核心GPU&#xff0c;旨在为万亿参数的AI大型语言模型提供支持。Blackwell B200需要先进的800Gbps网络&#xff0c;完全符合在AI工作负载的AI网络报告中概述的预测。随着人工智能工作负载的流量预计每两年增长10…...

速盾:bgp 静态 cdn

BGP&#xff08;边界网关协议&#xff09;是一种用于在互联网中交换路由信息的协议&#xff0c;它允许不同自治系统&#xff08;AS&#xff09;之间的路由器进行通信和交换路由信息。CDN&#xff08;内容分发网络&#xff09;是一种通过将内容分散放置在全球各地的服务器上&…...

union all 以及标量子查询执行计划

SELECT 1, (SELECT ID1 FROM TE WHERE IDA.ID2) FROM .TA A WHERE COLA X UNION ALL SELECT 1, (SELECT ID2 FROM TD WHERE IDA.ID1) FROM .TB A WHERE COLA X UNION ALL SELECT 1,COL2 AS PARENT_UUID FROM .TC a WHERE COLA X 三个union all 看着像是5个table joi…...

上位机图像处理和嵌入式模块部署(f103 mcu和Qt上位机联动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 之前我们写过一篇文章&#xff0c;上面说的是如何利用串口对mcu进行控制&#xff0c;即如果利用串口实现mcu led灯的点亮和熄灭。输入1的时候&…...

TiKV学习5:TiDB SQL执行流程

目录 1. DML语句读流程概要 2. DML语句写流程概要 3. DDL 流程概要 4. SQL的Parse和Compile 5. 读取的执行 6. 写入的执行 7. DDL的执行 8. 小结 1. DML语句读流程概要 TiDB Server接收sql并处理&#xff0c;TiKV负责持久化数据&#xff0c;PD提供TSO和Region的数据字典…...

Unity 自定义编辑器根据枚举值显示变量

public class Test : MonoBehaviour {[HideInInspector][Header("数量")][SerializeField]public int num;[Header("分布类型")][SerializeField]public DistributionType distType;[HideInInspector][Header("位置")][SerializeField]public Li…...

linux下 搭建Llama3

安装软件&#xff1a; Ollama&#xff0c;官方网站&#xff1a;https://ollama.com/ 可以再下载win、mac和linux版本 linux安装命令为&#xff1a;curl -fsSL https://ollama.com/install.sh | sh 由于我的机器是linux不联网机器&#xff0c;网上没找到下载离线方式&#xff0c…...

【蓝桥杯——物联网设计与开发】拓展模块2 - 电位器模块

一、电位器模块 &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 蓝桥杯物联网竞赛实训平台提供了一个拓展接口 CN2&#xff0c;所有拓展模块均可直接安装在 Lora 终端上使用&#xff1b; 图1 拓展接口 电位器模块电路原理图如下所示&#xff1a; 图2 …...

Jtti:租用的php服务器运行异常是什么原因导致的?

PHP服务器运行异常可能由多种原因引起。以下是一些常见问题及其相应的解决方案&#xff1a; 1. 服务器资源不足 原因&#xff1a; CPU、内存或磁盘空间不足&#xff0c;导致服务器性能下降。 解决方案&#xff1a; 检查系统资源&#xff1a;使用以下命令检查CPU、内存和磁盘使用…...

恒创科技:无法与服务器建立安全连接怎么解决?

在使用互联网服务时&#xff0c;有时会出现无法与服务器建立安全连接的问题&#xff0c;此错误消息通常出现在尝试访问需要安全连接的网站(例如使用 HTTPS 的网站)时&#xff0c;这可能是由于多种原因造成的&#xff0c;以下是一些常见的解决方法&#xff0c;帮助你解决问题。 …...

【面试】介绍一下HotSpot虚拟机

目录 1. 说明2. 起源与发展3. 技术特点3.1 热点代码探测技术3.2 内存管理3.3 垃圾收集器3.4 并发和多线程支持3.5 指令重排优化 4. 执行模式与性能 1. 说明 1.HotSpot虚拟机是一款由Oracle JDK和OpenJDK广泛使用的Java虚拟机&#xff08;JVM&#xff09;。2.HotSpot虚拟机凭借…...

【测试】linux快捷指令工具cxtool

简介 登录linux时,我们经常需要重复输入一些指令. 这个工具可以把这些指令预置,需要的时候鼠标一点,会自动按预置的字符敲击键盘,敲击出指令. 下载地址 https://download.csdn.net/download/bandaoyu/89379371 使用方法 1,编辑配置文件&#xff0c;自定义自己的快捷指令。 2…...