mysql ngram 中文_MySQL 全文检索 ngram插件
InnoDB默认的全文索引parser非常合适于Latin,因为Latin是通过空格来分词的。但对于像中文,日文和韩文来说,没有这样的分隔符。一个词可以由多个字来组成,所以我们需要用不同的方式来处理。在MySQL 5.7.6中我们能使用一个新的全文索引插件来处理它们:n-gramparser.
什么是N-gram?
在全文索引中,n-gram就是一段文字里面连续的n个字的序列。例如,用n-gram来对”信息系统”来进行分词,得到的结果如下:
如何在InnoDB中使用N-gram Parser?
N-gram parser是默认加载到MySQL中并可以直接使用的。我们只需要在DDL中创建全文索引时使用WITH PARSER ngram。
我们引入了一个新的全局变量叫ngram_token_size。由它来决定n-gram中n的大小,也就是词的大小。它的默认值是2,这个时候,我们使用的是bigram。它的合法的取值范围是1到10。现在,我们很自然会想到一个问题:实际应用中应该如何设置ngram_token_size值的大小呢?当然,我们推荐使用2。但是你也可以通过如下这个简单的规则来可以选择任何合法的值:设置到你希望能查询到的最小的词的大小。如果你想查询到单个字,那么我们需要设置为1。 ngram_token_size的值设置的越小,全文索引占用的空间也越小。一般来说,查询正好等于ngram_token_size的词,速度会更快,但是查询比它更长的词或短语,则会变慢。
N-gram分词处理
N-gram parser和系统默认的全文索引parser有如下不同点:
无用词(stopword)处理:通常,对于一个新的词,我们会查找stopwords表,看是否有匹配的词。如果有,这个词就不会加入到全文索引中。但是在n-gram中,我们会查找stopwords表,看是否包含里面的词。这样处理的原因是,在中日韩的文本中,有很多没有意义的字符,词语和标点符号。比如,如果我们把‘的’加入到stopwords表中,那么对于句子‘信息的系统’,在默认情况下我们分词结果为‘信息’,‘系统’。其中‘息的’和‘的系’被过滤掉了。
我们可以通过查询INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE和INFORMATION_SCHEMA.INNODB_FT_TABLE_TABLE来查询哪些词在全文索引里面。这是一个非常有用的调试工具。如果我们发现一个包含某个词的文档,没有如我们所期望的那样出现在查询结果中,那么这个词可能是因为某些原因不在全文索引里面。比如,它含有stopword,或者它的大小小于ngram_token_size等等。这个时候我们就可以通过查询这两个表来确认。
mysql ngram 中文_MySQL 全文检索 ngram插件相关推荐
- mysql Ngram 全文索引_MySQL 全文检索 ngram Mybatis
创建全文索引(FullText index) 创建表的同时创建全文索引 FULLTEXT (name) WITH PARSER ngram 通过 alter table 的方式来添加 alter ta ...
- mysql全文搜索插件_MySQL 全文检索 ngram插件
InnoDB默认的全文索引parser非常合适于Latin,因为Latin是通过空格来分词的.但对于像中文,日文和韩文来说,没有这样的分隔符.一个词可以由多个字来组成,所以我们需要用不同的方式来处理. ...
- mysql match 中文_Mysql全文搜索match against的用法
对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的.将数据装载到一个已经有 FULL ...
- mysql java 中文_mysql +java 中文乱码问题彻底理解和解决
| 1 | ????MySQL???????? | | 2 | ??MySQL?? | | 3 | 测试MySQL编码 | +----+-------------------+ 现在可以看到中文正常显 ...
- mysql查询中文_MySQL中like查询中文问题的解决
在做MySQL的Like查询是发现中文搜索总是不争取,从网上找到了几个解决方法,大家可以看看:方法一: 解决方法是对于包含中文的字段加上quot 在做MySQL的Like查询是发现中文搜索总是不争取, ...
- mysql存中文_mysql数据库存储中文数据的解决办法
我在学习django中admin模块的时候,登录进入后台操作页面,输入中文数据,但保存之后全是乱码(全是"????????????"),然后就开始了解决问题之路. 1.首先百度搜索 ...
- mysql密码加强_MySQL密码增强插件
介绍 以前没有太注意MySQL密码安全策略的配置方法,只是人为了将密码设为复杂密码,但是没有找到配置的方法,今天姜承尧的微信公众号正好发布了一篇关于这个的文章,所以在这里也顺便将方法写下来.首先该功能 ...
- mysql连接中文_MYSQL远程连接查询中文乱码
当在服务器远程连接mysql服务器的时候,登录后编码方式latin1:接着我在mysql命令窗口修改为utf-8后,再次远程登录,编码方式依然为latin1: #mysql -h 192.168.1. ...
- mysql 命令 中文_mysql命令行中文问题
问题:在mysql命令行执行 source xxx.sql文件,报告中文字符串导致的语法错误. 原因:一般情况我们用记事本编辑的文件保存默认式是:ANSI,而mysql环境配置中的默认编码一般是utf ...
最新文章
- matlab如何读取未知行数,带头文件和字段名的txt文件
- mysql 从数据库配置文件_mysql数据库配置文件
- 学习《apache源代码全景分析》之多任务并发处理摘录
- html 如何去除浮动,CSS浮动? 如何清除浮动?
- element的分页怎么改中文配置_vue想改变element分页样式
- linux中的fork方法(python)
- zxing二维码的生成与解码(C#)
- 关于 php 用webservice传输数据的问题(nosoap与.NET对接)此处一直困扰三天时间,终于解决...
- 模板上 php dede,DEDE模板中使用php和if判断语句实例
- 用ByteArrayOutputStream解决IO流乱码问题
- 人脸识别之特征脸方法(Eigenface)PCA方法
- 软考软件设计师中级考试免费视频教程汇总
- 如何下载和安装 iOS开发教程
- 谷歌chrome 71 flash 添加问题的解决方案(chrome禁用添加允许flash的选项)
- java短信_java发送短信的实现步骤
- 【selenium 模拟拼图】滑动拼图验证码10分钟教程
- java题电影院售票设计报告_基于Java的电影订票网站的设计实现 任务书.doc
- 计算机处理器怎么看 64,怎么查看电脑处理器是32还是64位
- html网页制作摘要,关于静态HTML网页制作
- 线上发版如何做到分批发的?详解蓝绿部署,滚动升级,A/B 测试,灰度发布/金丝雀发布
热门文章
- 使用GB28181从海康NVR设备上获取实时视频
- PDT各代表职责(案例)
- Unity功能——Unity离线文档下载及使用
- 370 门免费编程与计算机科学在线课程
- 我的世界小游戏服务器开服制作教程,《我的世界》服务器制作技巧 简单架设开服...
- 值传递和引用传递详解
- VS2019无法下载安装文件,安装失败
- 打造爆款游戏互动体验,拍乐云Unity实时语音了解一下
- 2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛(北京移动用户体验影响因素研究全套代码)
- Unity插件调研_Gis_Map