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

郴州建站江苏省建设协会网站

郴州建站,江苏省建设协会网站,行业门户网站运营,友情链接权重高的网站本教程将向您展示如何使用MySQL ngram全文解析器来支持中文#xff0c;日文#xff0c;韩文等表意语言的全文搜索。MySQL ngram全文解析器简介MySQL内置的全文解析器使用空格确定单词的开始和结束。当涉及汉语#xff0c;日语或韩语等表意语言语言时#xff0c;这是一个限制…本教程将向您展示如何使用MySQL ngram全文解析器来支持中文日文韩文等表意语言的全文搜索。MySQL ngram全文解析器简介MySQL内置的全文解析器使用空格确定单词的开始和结束。当涉及汉语日语或韩语等表意语言语言时这是一个限制因为这些语言不使用分词符。为了解决这个问题MySQL提供了ngram全文解析器。自MySQL5.7.6版起MySQL将ngram全文解析器作为内置的服务器插件这意味着当MySQL数据库服务器启动时MySQL会自动加载该插件。 MySQL支持用于InnoDB和MyISAM存储引擎的ngram全文解析器。根据定义ngram是来自文本序列的多个字符的连续序列。 ngram全文解析器的主要功能是将文本序列标记为n个字符的连续序列。以下说明了ngram全文解析器如何标记不同值n的文本序列n 1: m,y,s,q,ln 2: my, ys, sq,qln 3: mys, ysq, sqln 4: mysq, ysqln 5: mysql使用 ngram 解析器创建FULLTEXT索引要创建使用ngram全文解析器的FULLTEXT索引可以在CREATE TABLEALTER TABLE或CREATE INDEX语句中添加WITH PARSER ngram。例如以下语句创建新的帖子表并将标题和正文列添加到使用ngram全文解析器的FULLTEXT索引。USE testdb;CREATE TABLE posts (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(255),body TEXT,FULLTEXT ( title , body ) WITH PARSER NGRAM) ENGINEINNODB CHARACTER SET UTF8;以下INSERT语句赂posts表中插入一个新行SET NAMES utf8;INSERT INTO posts(title,body)VALUES(MySQL全文搜索,MySQL提供了具有许多好的功能的内置全文搜索),(MySQL教程,学习MySQL快速简单和有趣);请注意SET NAMES语句设置客户端和服务器将用于发送和接收数据的字符集; 在本示例中它使用的是utf8。要查看ngram如何标记文本请使用以下语句SET GLOBAL innodb_ft_aux_tabletestdb/posts;SELECT*FROMinformation_schema.innodb_ft_index_cacheORDER BY doc_id , position;执行上面查询语句得到以下结果 -mysql SELECT*FROMinformation_schema.innodb_ft_index_cacheORDER BY doc_id , position;--------------------------------------------------------------| WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID | POSITION |--------------------------------------------------------------| my | 2 | 3 | 2 | 2 | 0 || ys | 2 | 3 | 2 | 2 | 1 || sq | 2 | 3 | 2 | 2 | 2 || ql | 2 | 3 | 2 | 2 | 3 || l全 | 2 | 2 | 1 | 2 | 4 || 全文 | 2 | 2 | 1 | 2 | 5 || 文搜 | 2 | 2 | 1 | 2 | 8 || 搜索 | 2 | 2 | 1 | 2 | 11 || ql | 2 | 3 | 2 | 2 | 18 || my | 2 | 3 | 2 | 2 | 18 || ys | 2 | 3 | 2 | 2 | 18 || sq | 2 | 3 | 2 | 2 | 18 || l提 | 2 | 2 | 1 | 2 | 22 || 提供 | 2 | 2 | 1 | 2 | 23 || 供了 | 2 | 2 | 1 | 2 | 26 || 了具 | 2 | 2 | 1 | 2 | 29 || 具有 | 2 | 2 | 1 | 2 | 32 || 有许 | 2 | 2 | 1 | 2 | 35 || 许多 | 2 | 2 | 1 | 2 | 38 || 多好 | 2 | 2 | 1 | 2 | 41 || 好的 | 2 | 2 | 1 | 2 | 44 || 的功 | 2 | 2 | 1 | 2 | 47 || 功能 | 2 | 2 | 1 | 2 | 50 || 能的 | 2 | 2 | 1 | 2 | 53 || 的内 | 2 | 2 | 1 | 2 | 56 || 内置 | 2 | 2 | 1 | 2 | 59 || 搜索 | 2 | 2 | 1 | 2 | 60 || 文搜 | 2 | 2 | 1 | 2 | 60 || 全文 | 2 | 2 | 1 | 2 | 60 || 置全 | 2 | 2 | 1 | 2 | 62 || my | 2 | 3 | 2 | 3 | 0 || ys | 2 | 3 | 2 | 3 | 1 || sq | 2 | 3 | 2 | 3 | 2 || ql | 2 | 3 | 2 | 3 | 3 || l教 | 3 | 3 | 1 | 3 | 4 || 教程 | 3 | 3 | 1 | 3 | 5 || 学习 | 3 | 3 | 1 | 3 | 12 || 习m | 3 | 3 | 1 | 3 | 15 || sq | 2 | 3 | 2 | 3 | 18 || ql | 2 | 3 | 2 | 3 | 18 || my | 2 | 3 | 2 | 3 | 18 || ys | 2 | 3 | 2 | 3 | 18 || l快 | 3 | 3 | 1 | 3 | 22 || 快速 | 3 | 3 | 1 | 3 | 23 || 速 | 3 | 3 | 1 | 3 | 26 || 简 | 3 | 3 | 1 | 3 | 29 || 简单 | 3 | 3 | 1 | 3 | 32 || 单和 | 3 | 3 | 1 | 3 | 35 || 和有 | 3 | 3 | 1 | 3 | 38 || 有趣 | 3 | 3 | 1 | 3 | 41 |--------------------------------------------------------------50 rows in set此查询对于故障排除目的很有用。例如如果一个单词不包括在搜索结果中则该单词可能没有被编入索引因为它是一个停止词或者可能是其它原因。设置ngram令牌大小在前面的示例可以看到默认情况下ngram中的令牌大小(n)为2要更改令牌大小请使用ngram_token_size配置选项值的范围是1到10。请注意较小的令牌大小可使较小的全文搜索索引更快地进行搜索。因为ngram_token_size是只读变量因此您只能使用两个选项设置其值第一种方式在启动字符串中mysqld --ngram_token_size1第二种方式 - 在配置文件中[mysqld]ngram_token_size1ngram解析器短语搜索MySQL将短语搜索转换成ngram短语搜索。 例如abc被转换为ab bc它返回包含ab bc和abc的文档。以下示例显示在posts表中搜索短语搜索SELECTid, title, bodyFROMpostsWHEREMATCH (title , body) AGAINST (搜索 );执行上面查询语句得到以下结果 -mysql SELECTid, title, bodyFROMpostsWHEREMATCH (title , body) AGAINST (搜索 );--------------------------------------------------------------| id | title | body |--------------------------------------------------------------| 1 | MySQL全文搜索 | MySQL提供了具有许多好的功能的内置全文搜索 |--------------------------------------------------------------1 row in set用ngram处理搜索结果自然语言模式在自然语言模式搜索中搜索项被转换为ngram值的并集。 假设令牌大小为2或者二进制则搜索项mysql被转换为我的my ys sq和ql。SELECT*FROMpostsWHEREMATCH (title , body) AGAINST (简单和有趣 IN natural language MODE);执行上面查询语句得到以下结果 -mysql SELECT*FROMpostsWHEREMATCH (title , body) AGAINST (简单和有趣 IN natural language MODE);------------------------------------------| id | title | body |------------------------------------------| 2 | MySQL教程 | 学习MySQL快速简单和有趣 |------------------------------------------1 row in set布尔模式在BOOLEAN MODE搜索中搜索项被转换成ngram短语搜索。 例如SELECT*FROMpostsWHEREMATCH (title , body) AGAINST (简单和有趣 IN BOOLEAN MODE);执行上面查询语句得到以下结果 -mysql SELECT*FROMpostsWHEREMATCH (title , body) AGAINST (简单和有趣 IN BOOLEAN MODE);------------------------------------------| id | title | body |------------------------------------------| 2 | MySQL教程 | 学习MySQL快速简单和有趣 |------------------------------------------1 row in setngram通配符搜索ngram FULLTEXT索引仅包含ngram因此它不知道短语的开始。执行通配符搜索时可能会返回意外的结果。以下规则将应用于使用ngram FULLTEXT搜索索引的通配符搜索如果通配符中的前缀短语短于ngram令牌大小则查询返回所有包含以前缀项为起始的ngram令牌的文档。 例如SELECTid, title, bodyFROMpostsWHEREMATCH (title , body) AGAINST (my* );执行上面查询语句得到以下结果 -mysql SELECTid, title, bodyFROMpostsWHEREMATCH (title , body) AGAINST (my* );--------------------------------------------------------------| id | title | body |--------------------------------------------------------------| 1 | MySQL全文搜索 | MySQL提供了具有许多好的功能的内置全文搜索 || 2 | MySQL教程 | 学习MySQL快速简单和有趣 |--------------------------------------------------------------2 rows in set如果通配符中的前缀短语长于ngram令牌大小则MySQL将将前缀术语转换为ngram短语并忽略通配符运算符。 请参阅以下示例SELECTid, title, bodyFROMpostsWHEREMATCH (title , body) AGAINST (mysqld* );执行上面查询语句得到以下结果 -mysql SELECTid, title, bodyFROMpostsWHEREMATCH (title , body) AGAINST (mysqld* );--------------------------------------------------------------| id | title | body |--------------------------------------------------------------| 1 | MySQL全文搜索 | MySQL提供了具有许多好的功能的内置全文搜索 || 2 | MySQL教程 | 学习MySQL快速简单和有趣 |--------------------------------------------------------------2 rows in set在这个例子中短语“mysqld”被转换为ngram短语my ys sq ql ld因此返回包含其中一个短语的所有文档。处理停止词ngram解析器不包括在停止词列表中包含停止词的令牌。例如假设ngram_token_size为2文档包含abc。 ngram解析器将文档标记为ab和bc。 如果b是一个停用词则ngram将包含ab和bc因为它们包含b。请注意如果语言不是英语则必须定义自己的词条列表。 此外长度大于ngram_token_size的停止词将被忽略。在本教程中您已经学会了如何使用MySQL ngram全文解析器来处理表意语言的全文搜索。¥ 我要打赏纠错/补充收藏加QQ群啦易百教程官方技术学习群注意建议每个人选自己的技术方向加群同一个QQ最多限加 3 个群。
http://www.yutouwan.com/news/455135/

相关文章:

  • 高品质网站设计查看一个网站开发语言
  • 贾汪区建设局网站外国好的设计网站大全
  • 小型网站开发语言网站项目建设背景
  • 公司网站宣传设计方案php网站制作常用代码
  • 重庆南岸营销型网站建设公司推荐wordpress获取文章页id
  • 做网站怎么才会被百度收录做网站收费多少
  • 湖北网站建站系统哪家好合肥专业的房产网站建设
  • 网站开发是什么意思啊湖北省建设厅网站怎么打不开
  • 网络培训系统建设厦门seo结算
  • 阿里云服务器可以做下载类网站吗河南做网站高手排名
  • 做网站需要掌握的技术做网站销售东西 需要什么资质
  • 搭建一个网站的服务器个人网站模板 html
  • 怀化订水网站大连网站建设 领超最好
  • 如何建个人网站流程星链seo管理
  • 郑州网站制作怎么样重庆网站推广哪家好
  • 北京网站建设平台春季高考网站建设
  • 盐城网站建设方案wordpress电视主题
  • 建网站的公司有哪些注册个app要多少钱
  • 网站服务器数据迁移网站建设基于
  • 建网站报价表手机模板网站下载
  • 网站流量不够买了阿里云怎么做网站
  • 制作网页网站代码wordpress插件点不开
  • 诸城高密网站建设wnmp 搭建WordPress
  • 电子商务网站建设案例分析福州网站建站
  • 大冶市规划建设局网站甘肃省崇信县门户网
  • 网站及网页设计费用商丘做网站哪个好
  • iis6.0做网站压缩seo统计
  • 织梦淘客网站深圳制作网站公司
  • 酒店网站开发合同深圳租房建设局网站
  • 南昌网站建设企业给企业做网站需要什么信息