内置的MySQL全文语法分析器使用单词之间的空白作为定界符来确定单词的开始和结束位置,这在使用不使用单词定界符的表意语言时是一个限制。为了解决此限制,MySQL提供了一个支持中文,日语和朝鲜语(CJK)的ngram全文语法分析器。支持将ngram全文分析器与InnoDB和 一起使用MyISAM。

注意

MySQL还为日语提供了MeCab全文解析器插件,该插件将文档标记化为有意义的单词。有关更多信息,请参见第12.9.9节“ MeCab全文分析器插件”。

ngram是n来自给定文本序列的连续 字符序列。ngram解析器将文本序列标记为连续的n字符序列。例如,您可以使用ngram全文分析器将“ abcd ”标记为不同的值n。

n=1: 'a', 'b', 'c', 'd'

n=2: 'ab', 'bc', 'cd'

n=3: 'abc', 'bcd'

n=4: 'abcd'

ngram全文语法分析器是内置的服务器插件。与其他内置服务器插件一样,启动服务器时会自动加载该插件。

第12.9节“全文搜索功能”中 描述的全文搜索语法 适用于ngram解析器插件。本节介绍了解析行为的差异。全文相关的配置选项,除了最小和最大字长选项(innodb_ft_min_token_size, innodb_ft_max_token_size, ft_min_word_len, ft_max_word_len)也适用。

配置ngram令牌大小

ngram解析器的默认ngram令牌大小为2(bigram)。例如,令牌大小为2时,ngram解析器将字符串“ abc def ”解析为四个令牌: “ ab ”,“ bc ”,“ de ”和 “ ef ”。

可以使用ngram_token_size配置选项来配置ngram令牌大小 ,该选项的最小值为1,最大值为10。

通常,ngram_token_size设置为要搜索的最大令牌的大小。如果仅打算搜索单个字符,请将其设置 ngram_token_size为1。较小的令牌大小将产生较小的全文本搜索索引,并且搜索速度更快。如果您要搜索包含多个字符的单词,请进行相应设置 ngram_token_size。例如, “ 生日快乐 ”是 “ 生日快乐 ”简体中国,在 “ 生日 ”是 “ 生日 ”和 “ 快乐 ”译为“ 快乐 ”。要搜索诸如此类的两个字符的单词,请将其设置ngram_token_size 为2或更高的值。

作为只读变量, ngram_token_size只能将其设置为启动字符串的一部分或在配置文件中:

启动字符串:

mysqld --ngram_token_size=2

配置文件:

[mysqld]

ngram_token_size=2注意

下面的最小和最大字长配置选项被忽略FULLTEXT的是使用NGRAM解析器指标: innodb_ft_min_token_size, innodb_ft_max_token_size, ft_min_word_len,和 ft_max_word_len。

创建使用ngram解析器的FULLTEXT索引

要创建FULLTEXT一个使用NGRAM解析器指数,指定WITH PARSER ngram用 CREATE TABLE, ALTER TABLE或 CREATE INDEX。

下面的示例演示了如何创建具有ngram 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 ngram

) ENGINE=InnoDB CHARACTER SET utf8mb4;

mysql>SET NAMES utf8mb4;

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 utf8;

ALTER TABLE articles ADD FULLTEXT INDEX ft_index (title,body) WITH PARSER ngram;

# Or:

CREATE FULLTEXT INDEX ft_index ON articles (title,body) WITH PARSER ngram;

ngram解析器空间处理

ngram解析器在解析时消除空格。例如:

“ ab cd ”解析为“ ab ”, “ cd ”

“ a bc ”被解析为“ bc ”

ngram解析器停用词处理

内置的MySQL全文分析器将单词与停用词列表中的条目进行比较。如果单词等于停用词列表中的条目,则该单词将从索引中排除。对于ngram解析器,停用词处理的执行方式有所不同。ngram解析器不排除与停用词列表中的条目相等的令牌,而是排除包含停用词的令牌 。例如,假设 ngram_token_size=2将包含“ a,b ”的文档解析为“ a ” 和“ ,b ”。如果将逗号(“ , ”)定义为停用词,则两者“ a ”和“ ,b ”从索引中排除,因为它们包含逗号。

默认情况下,ngram解析器使用默认停用词列表,其中包含英语停用词列表。对于适用于中文,日语或韩语的停用词列表,您必须创建自己的停用词。有关创建停用词列表的信息,请参见第12.9.4节“全文停用词 ”。

停用词的长度大于 ngram_token_size被忽略的词。

ngram解析器术语搜索

对于自然语言模式搜索,搜索词将转换为ngram词的并集。例如,字符串“ abc ”(假设 ngram_token_size=2)被转换为“ ab bc ”。给定两个文档,一个包含“ ab ”,另一个包含 “ abc ”,搜索词“ ab bc ”匹配两个文档。

对于布尔模式搜索,搜索项将转换为ngram短语搜索。例如,字符串“ abc”(假设 ngram_token_size=2)被转换为“ “ ab bc ” ”。给定两个文档,一个包含“ ab”,另一个包含“ abc”,搜索词组“ “ ab bc ” ”仅与包含“ abc”的文档匹配。

ngram解析器通配符搜索

因为FULLTEXTngram索引仅包含ngram,并且不包含有关术语开头的信息,所以通配符搜索可能返回意外结果。以下行为适用于使用ngram FULLTEXT搜索索引的通配符搜索 :

1、如果通配符搜索的前缀词短于ngram令牌大小,则查询将返回所有包含以前缀词开头的ngram令牌的索引行。例如,假设 ngram_token_size=2搜索“ a ”将返回以“ a ”开头的所有行 。

2、如果通配符搜索的前缀词长于ngram令牌大小,则该前缀词将转换为ngram短语,并且通配符运算符将被忽略。例如,假设 ngram_token_size=2将 “ abc ”通配符搜索转换为 “ ab bc ”。

ngram解析器短语搜索

短语搜索将转换为ngram短语搜索。例如,将搜索短语“ abc ”转换为 “ ab bc ”,这将返回包含“ abc ”和“ ab bc ”的文档 。

搜索短语“ abc def ”被转换为 “ ab bc de ef ”,这将返回包含“ abc def ”和“ ab bc de ef ”的文档 。不返回包含“ abcdef ”的文档。

ngram mysql_mysql8 参考手册--ngram全文分析器相关推荐

  1. stop slave mysql_mysql8 参考手册--STOP SLAVE语句

    STOP SLAVE [thread_types] [channel_option] thread_types: [thread_type [, thread_type] ... ] thread_t ...

  2. Sphinx 0.9.9/Coreseek 3.2 参考手册

    Sphinx 0.9.9/Coreseek 3.2 参考手册 Sphinx--强大的开源全文检索引擎,Coreseek--免费开源的中文全文检索引擎 Copyright © 2006-2010 (co ...

  3. Lua 5.1 参考手册

    Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes 云风 译 www.codingno ...

  4. 简明 XHTML 1.0 参考手册

    http://lamp.linux.gov.cn/WebStandard/short_xhtml_10_ref.html 简明 XHTML 1.0 参考手册 作者:金步国 版权声明 本文作者是一位自由 ...

  5. GC 调优(实战篇) - GC参考手册

    说明: Allocation Rate, 翻译为分配速率, 而不是分配率; 因为不是百分比,而是单位时间内分配的量; 同理, Promotion Rate 翻译为 提升速率; 您应该已经阅读了前面的章 ...

  6. 【报告分享】2019-2020年企业调薪参考手册.pdf(附下载链接)

    今天给大家分享中智咨询于2020年5月份发布的报告<2019-2020年企业调薪数据参考手册.pdf>,手册共包含如下四大部分: 1.企业调薪趋势: 2.人才流动观察: 3.应届生起薪: ...

  7. qj71c24n通讯实例_Q系列串行口通信模块用户参考手册QJ71C24N(基础篇).pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp电子工程/通信技术&nbsp>&nbsp数据通信与网络 Q系列串行口通信模块用户参考手册QJ ...

  8. Cocos2d-x游戏开发之Lua 5.1 参考手册

    Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes 云风 译 www.codingno ...

  9. Lua 5.0 参考手册

    Lua 5.0 参考手册 作者: Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2003 ...

最新文章

  1. Java Semaphore实现线程池任务调度
  2. getrealdays oracle_oracle 日期函数介绍
  3. 最近发现系统rabbitmq丢消息比较严重,于是想了些方案来查找原因,给将消息发送方式添加确认机制。 我们在本地模拟了wms发送打标消息的场景. 1. 有事务 2. 先发点对点队列, 再发订
  4. hdu1466(dp)
  5. java pojo 转 map_JSON和JAVA的POJO的相互转换
  6. Linux文件管理和用户管理
  7. Tensor的索引与切片
  8. PHP+txt聊天室
  9. Error: The method ‘DioHttpHeaders.add‘ has fewer named arguments than those of overridden method
  10. Android解析短视频无水印链接(精)抖音/快手/微视
  11. kindle电子书和新闻推送及RSS资源…
  12. Android Gmail签名客制化
  13. WRF4.2安装过程全记录
  14. MOS管的工作原理以及设计理念
  15. Intel 处理器模型
  16. 怎么用matlab保存音频文件,Matlab用图片和音频藏文件(续)
  17. Win10系统下提示“系统组策略禁止安装此设备”的解决方案(家庭版无组策略)
  18. java.util.Date的getYear() .
  19. [JZOJ4236] 登山
  20. Cortex-M3微处理器

热门文章

  1. linux系统USB摄像头反应慢,Linux下OpenCV打开USB接口的UVC摄像头及索引号是202的原因...
  2. 数据采集与管理【12】
  3. 领课教育开源系统-Redis的安装和使用
  4. cass参考手册_cass9.0 参 考 手 册.doc
  5. 微信消息推送配置详解 JAVA后端版本
  6. python QQ邮箱发送邮件
  7. Windows定时器使用方法
  8. 系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏。||水仙花数||敲桌子||利用嵌套循环,实现九九乘法表
  9. 弹性理论法研究桩基受力计算公式_水平荷载作用下群桩计算方法研究
  10. 2.3ORBSLAM3之相机模型与畸变模型