mysql5.7 全文索引不支持中文分词怎么办

技术mysql5.7 全文索引不支持中文分词怎么办本篇文章为大家展示了mysql5.7 全文索引不支持中文分词怎么办,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在MySQL 5

本文展示了mysql5.7全文索引如何不支持中文分词。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

在MySQL 5.7.6之前,全文索引只支持英文全文索引,不支持中文全文索引。有必要使用分词器将中文段落拆分成单词,然后存储在数据库中。

从MySQL 5.7.6开始,MySQL内置了ngram全文解析器,支持中文、日文和韩文分词。

本文使用的MySQL版本是5.7.22,InnoDB数据库引擎。

ngram全文解析器

ngram是文本中n个连续单词的序列。Ngram全文解析器可以对文本进行分段,每个单词都是n个单词的连续序列。例如,使用ngram全文解析器对“生日快乐”:进行分段。

N=1:“健康”、“一天”、“快”和“快乐”。

N=2:“生日”、“斋戒日”、“快乐”。

N=3:“生日快乐”、“节日快乐”。

N=4: '生日快乐' MySQL使用全局变量ngram_token_size来配置ngram中n的大小。它的值范围是1到10,默认值是2。通常,ngram_token_size被设置为要查询的最小字数。如果需要搜索单个单词,请将ngram_token_size设置为1。当默认值为2时,通过搜索单词无法获得任何结果。因为中文单词至少是两个汉字,所以建议使用默认值2。

设置全局变量ngram_token_size的两种方法:

1.当mysqld命令启动时。

Myqld-ngram _ token _ size=22,修改MySQL配置文件。

[mysqld]

Ngram_token_size=2

创建全文索引

1。创建表时创建全文索引。

CREATETABLEarticles(

idINTUNSIGNEDAUTO _ INCREMENTNOTNULLPRIMARYKEY,

titleVARCHAR(200),

正文,

带语法的全文(标题,正文)

)ENGINE=INNODB2.通过改变表格的方式添加。

ALTERTABLEarticlesADDFULLTEXTINDEXft _ index(title,body)带有WITHPARSERngram3.直接通过创建索引。

CREATEFULLTEXTINDEXft _ indexon articles(标题,正文)带有语法;00-1010有两种常用的全文检索模式:

1、自然语言模式(自然语言模式),

自然语言模式是MySQL默认的全文检索模式。自然语言模式不能使用运算符,也不能指定复杂的查询,例如必须出现或不能出现的关键字。

2.BOOLEAN模式。

BOOLEAN模式可以使用运算符,并且可以支持复杂的查询,这些查询指定关键字是否必须出现,或者关键字是否具有高权重或低权重。

全文检索模式

从文章中选择*

地点匹配(标题、正文)

反对(‘一路’INNATURALLANGUAGEMODE);

//不指定模式,默认使用自然语言模式。

从文章中选择*

地点匹配(标题、正文)

反对('一路');例子

上述示例返回的结果将根据相关性自动排序,最高相关性排在第一位。相关性的值是非负浮点数,0表示没有相关性。

>// 获取相关性的值
SELECT id,title,
MATCH (title,body) AGAINST ('手机' IN NATURAL LANGUAGE MODE) AS score
FROM articles
ORDER BY score DESC;

示例

// 获取匹配结果记录数
SELECT COUNT(*) FROM articles
WHERE MATCH (title,body)
AGAINST ('一路 一带' IN NATURAL LANGUAGE MODE);

可以使用BOOLEAN模式执行高级查询。

// 必须包含"腾讯"
SELECT * FROM articles
WHERE MATCH (title,body)
AGAINST ('+腾讯' IN BOOLEAN MODE);

示例

// 必须包含"腾讯",但是不能包含"通讯工具"
SELECT * FROM articles
WHERE MATCH (title,body)
AGAINST ('+腾讯 -通讯工具' IN BOOLEAN MODE);

示例

下面的例子演示了BOOLEAN模式下运算符的使用方式:

'apple banana' 
无操作符,表示或,要么包含apple,要么包含banana
'+apple +juice'
必须同时包含两个词
'+apple macintosh'
必须包含apple,但是如果也包含macintosh的话,相关性会更高。
'+apple -macintosh'
必须包含apple,同时不能包含macintosh。
'+apple ~macintosh'
必须包含apple,但是如果也包含macintosh的话,相关性要比不包含macintosh的记录低。
'+apple +(>juice <pie)'
查询必须包含apple和juice或者apple和pie的记录,但是apple juice的相关性要比apple pie高。
'apple*'
查询包含以apple开头的单词的记录,如apple、apples、applet。
'"some words"'
使用双引号把要搜素的词括起来,效果类似于like '%some words%',
例如“some words of wisdom”会被匹配到,而“some noise words”就不会被匹配。
注意
  • 只能在类型为CHAR、VARCHAR或者TEXT的字段上创建全文索引。

  • 全文索引只支持InnoDB和MyISAM引擎。

  • MATCH (columnName) AGAINST ('keywords')。MATCH()函数使用的字段名,必须要与创建全文索引时指定的字段名一致。如上面的示例,MATCH (title,body)使用的字段名与全文索引ft_articles(title,body)定义的字段名一致。如果要对title或者body字段分别进行查询,就需要在title和body字段上分别创建新的全文索引。

  • MATCH()函数使用的字段名只能是同一个表的字段,因为全文索引不能够跨多个表进行检索。

  • 如果要导入大数据集,使用先导入数据再在表上创建全文索引的方式要比先在表上创建全文索引再导入数据的方式快很多,所以全文索引是很影响TPS的。

上述内容就是mysql5.7 全文索引不支持中文分词怎么办,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/37459.html

(0)

相关推荐

  • 4行4字的古诗,我要60首4行5字的古诗

    技术4行4字的古诗,我要60首4行5字的古诗1,静夜思4行4字的古诗。2,咏鹅。3,终南望余雪。4,登鹳雀楼。5,江雪。6,寻隐者不遇。7,江上渔者。8,夏日绝句。9,所见。10,春夜喜雨。11,八阵图。12,绝句。13

    生活 2021年10月23日
  • 公务员报名要求,公务员省考报考条件要求

    技术公务员报名要求,公务员省考报考条件要求以2021年广西省考为例,报考要求为公务员报名要求:
    1.具有中华人民共和国国籍。
    2.拥护中华人民共和国宪法,拥护中国共产党领导和社会主义制度。
    3.具有良好的政治素质和道德品

    生活 2021年10月21日
  • 如何快速搭建实用的爬虫管理平台

    技术如何快速搭建实用的爬虫管理平台这篇文章主要讲解了“如何快速搭建实用的爬虫管理平台”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何快速搭建实用的爬虫管理平台”吧!爬虫

    攻略 2021年10月23日
  • ?【Java深层系列】「技术盲区」让我们一起探索一下Netty(Java)底层的“零拷贝Zero-Copy”技术,上)

    技术?【Java深层系列】「技术盲区」让我们一起探索一下Netty(Java)底层的“零拷贝Zero-Copy”技术,上) ?【Java深层系列】「技术盲区」让我们一起探索一下Netty(Java)底层

    礼包 2021年12月24日
  • 如何解析图形界面登录以及telnet命令登录

    技术如何解析图形界面登录以及telnet命令登录今天就跟大家聊聊有关如何解析图形界面登录以及telnet命令登录,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。攻:

    攻略 2021年12月9日
  • php获取文件mime类型的几种常用方法

    技术php获取文件mime类型的几种常用方法 php获取文件mime类型的几种常用方法说明
    这些是在文件上传必备的一些验证函数,文件上传这一块要是不做好安全防护,肯定被人登录后台拿你源码的
    MIME类型

    礼包 2021年12月14日