MySQL5.7 中文全文检索与停用词的常用设置

# 查看 MySQL 版本
SELECT version();

# 查看 ngram 分词长度
SHOW VARIABLES LIKE 'ngram_token_size';

# 在 my.ini 文件中添加分词长度配置:
ngram_token_size=2

# 查看停用字的配置
SHOW GLOBAL VARIABLES LIKE '%stopword%';

# 在 my.ini 文件中添加禁止使用 MyISAM 存储引擎默认的停用字:
ft_stopword_file=""

# 重置索引表,只适用  MyISAM 存储引擎
REPAIR TABLE `test` QUICK;

# 查看 InnoDB 存储引擎的默认停用字
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;

# 添加自定义停用字表,只用于 InnoDB 存储引擎的停用字设置
CREATE TABLE `custom_stopwords`(`value` VARCHAR(30)) ENGINE = INNODB;

# 添加自定义停用字
INSERT INTO `custom_stopwords` (`value`) VALUES ('停用字');

# 临时设置自定义的停用字表,只适用  InnoDB 存储引擎,重启 MySQL 服务会失效
SET GLOBAL innodb_ft_server_stopword_table = '数据库名/custom_stopwords';

# 在 my.ini 文件中添加 InnoDB 存储引擎的自定义停用字表设置(永久的):
innodb_ft_server_stopword_table="数据库名/custom_stopwords"

# 重置索引表,适用  InnoDB 存储引擎
OPTIMIZE TABLE `test`;

# 查看 InnoDB 存储引擎的全文检索表当前的分词情况
SET GLOBAL innodb_ft_aux_table="数据库名/test";
SELECT * FROM information_schema.INNODB_FT_INDEX_CACHE ORDER BY DOC_ID, POSITION;

# 查看 MySQL 所有的分词长度设置
SHOW VARIABLES LIKE '%_%token%';

# 查看 MySQL 所有的全文检索相关设置
SHOW VARIABLES LIKE '%ft%';

# 添加测试表
CREATE TABLE `test` (
    `id` INT (11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` VARCHAR (255) NOT NULL,
    PRIMARY KEY (`id`),
    FULLTEXT KEY `fk_name` (`name`) /*!50100 WITH PARSER `ngram` */
) ENGINE = MyISAM 或 InnoDB DEFAULT CHARSET = utf8;

# 添加测试数据
INSERT INTO `test`(`name`) VALUES ('D-Hanks 溶液');

# 全文检索查询
SET @so = 'Hanks 溶液';
SELECT *, MATCH (`name`) AGAINST (@so IN BOOLEAN MODE) AS `score` FROM `test`
WHERE MATCH (`name`) AGAINST (@so IN BOOLEAN MODE)
ORDER BY `score` DESC;

# 重建中文全文检索索引
DROP INDEX `fk_name` ON `test1`;
CREATE FULLTEXT INDEX `fk_name` ON `test1` (`name`) WITH PARSER `ngram`;

# 更改存储引擎
ALTER TABLE test1 ENGINE = INNODB;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值