mysql 5.7 InnoDB 添加全文索引

本文介绍如何在MySQL 5.7环境下配置并使用InnoDB全文索引,包括修改配置参数、添加全文索引及验证索引效果的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要确定是mysql 5.6以上 否则不支持 innoDB全文索引(fulltext)

我使用的环境是mysql5.7 添加步骤如下:

  1. 修改变量(大部分人都这么改,看情况吧)
  2. 添加索引

其他的就是查看索引情况和验证索引情况

修改变量

首先先查看现在的变量情况

SHOW VARIABLES LIKE 'ft%';
Value_nameValue
ft_boolean_syntax+ -><()~*:”“\&|
ft_max_word_len84
ft_min_word_len4
ft_query_expansion_limit20
ft_stopword_file(built-in)

找到my.cnf 在 [mysqld]下添加一个变量

[mysqld]
ft_min_word_len=1

保存重启mysql

添加索引

alter table `表名` add fulltext index 索引名(索引字段1[,索引字段2,...]) with parser ngram;

查看索引结果

-- 设置全局查看表
set global innodb_ft_aux_table="库/表";
SELECT * FROM information_schema.INNODB_FT_INDEX_TABLE;

-- 查看当前都哪些表有全文索引
SELECT distinct table_schema,table_name FROM information_schema.STATISTICS WHERE index_type='fulltext'

验证

select * from `表名` where MATCH (字段名) AGAINST ('要搜索的内容');
### MySQL 5.7.44 全文搜索功能不起作用的解决方案 对于MySQL 5.7.44版本中的全文搜索功能无法正常工作的情况,通常涉及几个方面的原因分析和对应的解决措施。 #### 配置文件调整 确保`my.cnf`或`my.ini`(针对Windows环境)配置文件中启用了全文索引支持。具体来说,在`mysqld`部分添加或确认存在以下参数: ```ini ft_min_word_len=3 # 设置最小单词长度,默认为4个字符,可根据需求修改 innodb_ft_enable_stopword=OFF # 关闭停用词过滤器以提高匹配度 ``` 上述设置有助于扩大可被索引的内容范围并减少误判率[^1]。 #### 表结构验证与创建 检查表定义语句是否正确指定了FULLTEXT类型的索引字段。例如下面是一个适用于MyISAM存储引擎的例子: ```sql CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, FULLTEXT (title,body) ) ENGINE=MyISAM; ``` 值得注意的是InnoDB也自MySQL 5.6起全面支持全文检索特性;因此如果正在使用此引擎,则无需特别转换成其他类型即可实现相同效果[^3]。 #### 数据库状态排查 有时即使语法无误也可能因为数据库内部原因导致查询失败。此时可以通过执行OPTIMIZE命令来重建索引来解决问题: ```sql ALTER TABLE `articles` DROP INDEX `your_fulltext_index_name`; ALTER TABLE `articles` ADD FULLTEXT(`column_names`); ``` 另外还可以尝试重启服务端进程让更改生效[^2]。 #### 查询方式修正 最后要保证使用的SQL语句格式准确无误。标准形式如下所示: ```sql SELECT * FROM `table_name` WHERE MATCH (`field`) AGAINST ('search term' IN NATURAL LANGUAGE MODE); ``` 以上就是关于处理MySQL 5.7.44版内全文搜索失效的一些常见建议和技术手段汇总[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值