mysql使用全文索引实现大字段的模糊查询

没有了');`进行模糊查询。总结问题:从MySQL 5.7开始,MySQL内置了ngram全文检索插件,用来支持中文分词,并对MyISAM和InnoDB引擎有效。使用时注意版本号和配置。相关命令:使用`SHOW CREATE TABLE tbl_article_content;`查询当前表信息,使用`SHOW VARIABLES LIKE '%ngram%';`查询ngram引擎配置信息。
mysql使用全文索引实现大字段的模糊查询
场景说明:在centos7环境下,使用mysql5.7的InnoDB引擎,创建一个名为`tbl_article_content`的表。表结构中包含`id`、`content`、`article_id`、`create_by`和`modifield_by`字段,并对`content`字段建立了全文索引`content_word`。

为什么要使用索引:由于存在全局搜索需求,需要用户输入关键字来展示包含该关键字的文章(标题、简介、内容)。由于文章内容字段`content`存储的是大文本,为了提高查询效率,选择使用全文索引(fulltext)。

创建索引:使用ngram解析器对`tbl_article_content`表的`content`字段创建名为`content_word`的全文索引。

MySQL配置:MySQL默认没有开启与配置ngram,因此在建立索引后需要对MySQL进行配置。打开mysql配置文件,在[mysqld]下加入`ft_min_word_len=1`和`ngram_token_size=1`,并重启MySQL。进入MySQL后,修复之前创建的索引。

查询语句:使用`SELECT article_id FROM tbl_article_content WHERE MATCH(content) AGAINST('没有了');`进行模糊查询。

总结问题:从MySQL 5.7开始,MySQL内置了ngram全文检索插件,用来支持中文分词,并对MyISAM和InnoDB引擎有效。使用时注意版本号和配置。

相关命令:使用`SHOW CREATE TABLE tbl_article_content;`查询当前表信息,使用`SHOW VARIABLES LIKE '%ngram%';`查询ngram引擎配置信息。2024-11-13
mengvlog 阅读 12 次 更新于 2025-07-20 13:14:14 我来答关注问题0
  • 创建索引:使用ngram解析器对`tbl_article_content`表的`content`字段创建名为`content_word`的全文索引。MySQL配置:MySQL默认没有开启与配置ngram,因此在建立索引后需要对MySQL进行配置。打开mysql配置文件,在[mysqld]下加入`ft_min_word_len=1`和`ngram_token_size=1`,并重启MySQL。进入MySQL后...

  • 首先,MySQL需要在安装时启用全文索引搜索功能,否则无法实现快速搜索功能。为此,我们需要在MySQL客户端执行以下命令:SET GLOBAL innodb_ft_enable_stopword = Off;SET GLOBAL innodb_ft_server_stopword_table = ‘my_stopwords.txt’;上述的两个命令均是开启MySQL的全文索引搜素功能。再然...

  • MySQL从5.7版本开始支持内置的ngram全文检索插件,专门用于处理中文语义分词。为了使用ngram插件,首先需要在MySQL配置文件中设置分词大小,例如:[mysqld]ngram_token_size=2。这一步设置分词大小,越大则索引体积越大,需根据实际情况调整。创建示例表结构时,可以使用如下SQL语句:CREATE TABLE articles ...

  •  翡希信息咨询 【MySQL】全文索引(FULLTEXT)的使用

    创建索引:可以使用可视化工具或SQL语句创建全文索引。查询语句:全文索引有特定的查询语法,即MATCH AGAINST。配置最小搜索长度:全文索引的相关参数无法动态修改,需通过修改MySQL的配置文件来实现。通常,将最小搜索长度的值设置为2,并重启MySQL服务器使配置生效。然后删除原有的索引并重新创建。搜索模式:...

  • 实现MySQL全文索引功能,首先需要在创建表时指定使用 FULLTEXT 索引。这可以通过在创建表语句中使用 FULLTEXT 关键字来实现,适用于需要进行全文检索的列。例如:sql CREATE TABLE articles (id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255) NOT NULL,content TEXT,FULLTEXT(content) -- 指定 ...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部