0.场景说明

centos7 mysql5.7 InnoDB引擎

0.1创建表

DROP TABLE IF EXISTS tbl_article_content;

CREATE TABLE tbl_article_content (

id bigint(40) NOT NULL AUTO_INCREMENT,

content text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,

article_id bigint(40) NOT NULL COMMENT '对应文章ID',

create_by datetime(0) NOT NULL COMMENT '创建时间',

modifield_by datetime(0) NOT NULL COMMENT '更新时间',

PRIMARY KEY (id) USING BTREE,

INDEX artid(article_id) USING BTREE,

FULLTEXT INDEX content_word(content) WITH PARSER ngram

) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

0.2为什么要使用索引

因为有一个全局搜索的的需求,用户输入关键字对博客系统内所有含有该字段的文章(标题&简介&内容)进行展示,(上表只是文章内容表),由于要对文章内容进行搜素,而文章内容content在数据库中是以text存储的,所以为了查询效率,这里就需要使用索引,由于是查大文本,这里选择使用全文索引(fulltext).

1.创建索引(使用ngram解析器)

create fulltext index content_word on tbl_article_content(content) WITH PARSER ngram;

ngram是一个支持中文索引的分词引擎,

在这里我们对tbl_article_content表的content字段建一个叫content_word的全文索引.

2.mysql配置(my.cnf)

mysql默认是没有开启与配置ngram的,所以在建立索引后对mysql进行配置

打开mysql配置文件 vim /etc/my.cnf

在[mysqld]下加入

ft_min_word_len=1 //全文索引的最小搜索长度。默认是4

ngram_token_size=1 //分词的大小设置,这里设置越小,索引越大

重启mysql

systemctl restart mysqld

进入mysql,修复一下之前创的索引

repair table tbl_article_content

3.查询语句

select article_id FROM tbl_article_content WHERE MATCH(content) AGAINST('没有了');

4.总结问题

从MySQL 5.7开始,MySQL内置了ngram全文检索插件,用来支持中文分词,并且对MyISAM和InnoDB引擎有效,使用的时候注意自己版本号和配置

5.相关命令

    show create table tbl_article_content; //查询当前表信息
SHOW VARIABLES LIKE '%ngram%'; //查询ngram引擎配置信息

6.欢迎follow

github: https://github.com/DianeDii

wx: dianedii

知乎: 爱睡觉的狄大人 (带你睡大觉)

mysql使用全文索引实现大字段的模糊查询的更多相关文章

  1. mybatise 实现同一字段多模糊查询

    mybatise 同一字段多模糊查询 <foreach collection="typeList" index="index" item="it ...

  2. django中多个字段的模糊查询

    django中多个字段的模糊查询 使用Entity.objects.filter(name_contains='kris').filter(address='beijing') 这个方法是指名字包含k ...

  3. mysql 单表下的字段操作_查询

    查询的规律 查询语句限定条件越多,查询范围越小: 1.整个表 Select * From 库名.表名 2.整个表的某字段内 Select id From 库名.表名 3.整个表某字段的范围内 Sele ...

  4. MySQL中int类型的字段使用like查询方法

    方法参考自: http://stackoverflow.com/questions/8422455/performing-a-like-comparison-on-an-int-field 也就是使用 ...

  5. Mybatis 一个搜索框对多个字段进行模糊查询

    <select id="list" parameterType="ParamConfigCondition" resultType="Param ...

  6. Oracle Blob 字段的模糊查询

    原文地址:http://blog.csdn.net/springk/article/details/6866248

  7. 怎么对ORACLE里的CLOB字段进行模糊查询

    select b.* from oss_service_log a left join oss_service_log_detail b on a.pk_log = b.pk_log where a. ...

  8. myBatis 操作 mysql时,使用 like 关键进行模糊查询的方法

    参考:https://blog.csdn.net/rainbow702/article/details/50519424 like CONCAT('%', #{mkName}, '%')

  9. MySQL数据库一个字段对应多个值得模糊查询

    当一个字段想模糊查询出多个字段的时候,正常情况下一般会这么作 select * from a where name like 'a%' or name like 'b%' ....or ...; 但是 ...

随机推荐

  1. PyQt(Python+Qt)学习随笔:复选框checkBox的tristate属性

    在Qt Designer中,tristate属性是复选框checkBox相比较于QAbstractButton多出来的唯一属性. tristate属性表示复选框是三种状态还是两种状态,如果trista ...

  2. windows 10 扩大C盘空间

    DiskGenius工具去对windows 10空间进行扩容 1.DiskGenius,可以通过官网进行下载:http://www.diskgenius.cn/download.php 2.DiskG ...

  3. 从go-libp2p开始

    这里是从一系列关于libp2p的go实现教程开始,go-libp2p 我们会讲述go的安装,go模块的设置,启动libp2p节点,并在它们之间发送消息. 安装go go-libp2p推荐使用包含 mo ...

  4. 【Alpha冲刺阶段】Scrum Meeting Daily5

    [Alpha冲刺阶段]Scrum Meeting Daily5 1.会议简述 会议开展时间 2020/5/27 8:30-9:00 PM 会议基本内容摘要 大家讲述了自己的任务完成情况以及遇到的问题 ...

  5. REHの个人主页

    朝暮与年岁并往 然后与你一同行至天光. 简介 这是怎么做到的啊-- 把那些迷茫的浑浊的不可预知的,裁剪,变化,像个造物主一样,最终成为混沌而又分明的,除去一身的戾气和险恶,把那些复杂和晦涩都剖析成它精 ...

  6. Spring(一)--简介

    一.概述(什么是spring): Spring是分层的Java SE/EE应用full-stack(一站式)轻量级开源框架.他解决的是业务逻辑层和其他各层的松耦合问题,将面向接口的编程思想贯穿整个系统 ...

  7. web服务器专题:tomcat(三)tomcat-user.xml 配置文件

    回顾:web服务器专题:tomcat(二)模块组件与server.xml 配置文件 Tomcat管理模块 安装Tomcat后,访问127.0.0.1/8080可以看到这个首页,上图中的三个按钮即为To ...

  8. react第十二单元(react路由-使用react-router-dom-认识相关的组件以及组件属性)

    第十二单元(react路由-使用react-router-dom-认识相关的组件以及组件属性) #课程目标 理解路由的原理及应运 理解react-router-dom以及内置的一些组件 合理应用内置组 ...

  9. python去除文件中重复的行

    去除文件中重复的行 import os with open('db.txt','r',encoding='utf-8') as read_f,\ open('.db.txt.swap','w',enc ...

  10. 使用 vue 仿写的一个购物商城

    在学习了 vue 之后,决定做一个小练习,仿写了一个有关购物商城的小项目.下面就对项目做一个简单的介绍. 项目源码: github 项目的目录结构 -assets 与项目有关的静态资源,包括 css, ...