当前位置: 首页 > 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;是一种通过将内容分散放置在全球各地的服务器上&…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...