我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL fulltext index检索中文有哪些注意事项

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL fulltext index检索中文有哪些注意事项

本篇内容介绍了“MySQL fulltext index检索中文有哪些注意事项”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、查看表结构

mysql> show create table product_test02;
| Table                | Create Table   
| product_test02 | CREATE TABLE `product_test02` (
  `product_id` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `artisan_id` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `name` varchar(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `des` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '',
  `zhima_price` double(11,2) DEFAULT NULL,
  `market_price` double(11,2) DEFAULT NULL,
  `cover_pic` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `work_time` int(11) DEFAULT NULL,
  `comment_count` int(11) DEFAULT NULL,
  `like_count` int(11) DEFAULT NULL,
  `produt_consist` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `keep_time` int(11) DEFAULT NULL,
  `create_at` timestamp NULL DEFAULT NULL,
  `fav_count` int(11) DEFAULT NULL,
  `width` int(11) DEFAULT NULL,
  `height` int(11) DEFAULT NULL,
  `is_publish` int(11) DEFAULT NULL,
  `is_top` int(11) DEFAULT NULL,
  `is_delete` int(11) DEFAULT NULL,
  `sell_amount` int(11) DEFAULT '0',
  `free_service_time` int(11) DEFAULT NULL,
  `update_time` timestamp NULL DEFAULT NULL,
  `other_1` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `other_2` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `other_3` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `other_4` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `other_5` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `is_audit` tinyint(1) DEFAULT '0',
  `audit_time` timestamp NULL DEFAULT NULL,
  `is_undercarriage` tinyint(1) DEFAULT '0',
  `undercarriage_time` timestamp NULL DEFAULT NULL,
  `category` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `active_tag_dict_id` bigint(20) DEFAULT NULL,
  `active_price` double(11,1) DEFAULT NULL,
  `weight` int(11) unsigned DEFAULT '0',
  `fit_people` varchar(300) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `matter_attent` varchar(800) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `category_lv2_id` int(11) DEFAULT NULL,
  `artisan_visit` int(1) DEFAULT '1',
  `customer_visit` int(1) DEFAULT '0',
  `customer_zhima_price` double(11,2) DEFAULT NULL,
  `customer_market_price` double(11,2) DEFAULT NULL,
  `service_sex` int(1) DEFAULT '0',
  `service_mode` tinyint(2) DEFAULT '0' ,
  `last_update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `sell_price` double(11,2) NOT NULL DEFAULT '0.00',
  `is_new` int(1) NOT NULL,
  `spu_id` int(11) DEFAULT NULL,
  `category_id` int(11) DEFAULT NULL,
  `other_info` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
  `product_type` int(2) NOT NULL DEFAULT '0' ,
  `product_code` varchar(15) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、在name字段创建fulltext索引

mysql> alter table product_test02 add FULLTEXT index ft_indx_name (name) WITH PARSER ngram;
Query OK, 0 rows affected, 1 warning (3 min 45.93 sec)

3、利用fulltext index进行检索

mysql> select name from product_test02 where match(name) against ('头部' in boolean mode) limit 1;
+---------------------+
| name                |
+---------------------+
| 头部按*摩+拨筋       |
+---------------------+
1 row in set (0.00 sec)
mysql> select name from product_test02 where match(name) against ('头' in boolean mode) limit 1;
Empty set (0.00 sec)

经查询:这个是数据库ft_min_word_len参数有关,默认为4,至少检索4个字符,被检索字符串长度小于4个字符将检索不到。

4、改参数ft_min_word_len = 1并重启实例

mysql> show variables like 'ft%';
+--------------------------+----------------+
| Variable_name            | Value          |
+--------------------------+----------------+
| ft_boolean_syntax        | + -><()~*:""&| |
| ft_max_word_len          | 84             |
| ft_min_word_len          | 1              |
| ft_query_expansion_limit | 20             |
| ft_stopword_file         | (built-in)     |
+--------------------------+----------------+

5、再次查询

mysql> select name from product_test02 where match(name) against ('头' in boolean mode) limit 1;
Empty set (0.01 sec)

依然查询不到,原因是ft_min_word_len 参数改完之后,必须重建所有fulltext index

6、重建fulltext index并检索

mysql> select name from product_test02 where match(name) against ('头部' in boolean mode) limit 1;
Empty set (0.00 sec)
mysql> select name from product_test02 where match(name) against ('3' in boolean mode) limit 1;
Empty set (0.00 sec)

经查询,ngram_token_size=2 #用中文检索分词插件ngram之前,先得在MySQL配置文件里面设置他的分词大小

7、更改参数ngram_token_size=1,并重启实例

mysql> show variables like 'ng%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| ngram_token_size | 1     |
+------------------+-------+
1 row in set (0.01 sec)
mysql> select name from product_test02 where match(name) against ('头部' in boolean mode) limit 1;
+---------------------------------------------+
| name                                        |
+---------------------------------------------+
| 【头疼必拍】头部舒压+经络疏通               |
+---------------------------------------------+
1 row in set (0.01 sec)
mysql> select name from product_test02 where match(name) against ('头' in boolean mode) limit 1;
+--------------------------------------------------+
| name                                             |
+--------------------------------------------------+
| 头部拨筋头晕头痛失眠【头部调理】                 |
+--------------------------------------------------+
1 row in set (0.01 sec)

可以正常检索。

“MySQL fulltext index检索中文有哪些注意事项”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL fulltext index检索中文有哪些注意事项

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql建立索引要注意哪些事项

在建立索引时,需要注意以下几个事项:选择合适的列:只有在频繁用作查询条件的列上建立索引才会带来性能提升。通常,选择主键、唯一约束列或经常用作查询条件的列作为索引列。不要过度索引:过多的索引会增加维护成本,并且在插入、更新和删除数据时会降低性
mysql建立索引要注意哪些事项
2024-04-09

MYSQL group by 有哪些注意事项

目录1.group by 后面不能加 where2.having 或 group by 可单独使用3.having 和 group by 可使用别名为什么where不能用别名?为having却可以?总结前言:注意:本文以下内容基于 MyS
2022-07-05

mysql添加索引要注意哪些事项

在添加索引时,需要注意以下几个事项:索引不是越多越好,过多的索引会增加数据库的存储空间和维护成本,同时也会影响数据的插入、更新和删除速度。因此,应该根据实际查询需求和数据特点来选择添加索引。在创建索引时,应尽量避免对频繁更新的列创建索引,因
mysql添加索引要注意哪些事项
2024-05-13

mysql创建联合索引要注意哪些事项

创建联合索引时,需要注意以下事项:联合索引包含多个字段,字段的顺序会影响查询性能。一般来说,将最经常用于查询的字段放在索引的前面,可以提高查询效率。联合索引的字段顺序要符合查询的字段顺序,否则索引无法被有效利用。联合索引的字段数目要适量,过
mysql创建联合索引要注意哪些事项
2024-04-09

mysql导出sql文件要注意哪些事项

在导出MySQL数据库的SQL文件时,需要注意以下事项:确保有足够的权限:要导出数据库,您需要有足够的权限来执行该操作。通常,这需要具有SELECT和LOCK TABLE权限。使用正确的命令:在MySQL中,您可以使用mysqldump命令
mysql导出sql文件要注意哪些事项
2024-05-10

ubuntu中mysql安装要注意哪些事项

在安装MySQL时,需要注意以下事项:确保系统已经安装了必要的依赖项,如libaio1和libnuma1等。在安装MySQL之前,最好先备份数据,以防发生意外情况。在安装过程中,要选择合适的版本和安装方式,可以选择使用apt安装或者下载安装
ubuntu中mysql安装要注意哪些事项
2024-03-07

mysql中contract使用要注意哪些事项

在使用MySQL中的contract时,需要注意以下事项:确保合约中的数据类型和长度与数据库中的字段匹配,以避免数据类型不匹配或长度溢出的问题。使用合适的约束条件来确保数据的完整性和一致性,如主键、外键、唯一约束等。避免在合约中执行过多
mysql中contract使用要注意哪些事项
2024-05-23

MYSQL  group by使用的注意事项有哪些

本文小编为大家详细介绍“MYSQL group by使用的注意事项有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“MYSQL group by使用的注意事项有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
2023-07-02

PHP文件上传的注意事项有哪些

PHP文件上传的注意事项有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。PHP文件上传在实际实现的过程中偶尔会发生一些问题。下面我们就总结了一些解决的技巧经验,供大家在
2023-06-17

C#中HttpClient使用注意事项有哪些

小编给大家分享一下C#中HttpClient使用注意事项有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近在测试一个第三方API,准备集成在我们的网站应用中
2023-06-29

docker中安装mysql时要注意哪些事项

版本选择:在安装MySQL的时候,要根据自己的实际需求选择合适的版本,可以选择稳定版本或者最新版本。数据卷挂载:为了保证数据的持久化,建议将MySQL的数据目录挂载到宿主机的数据卷上,这样即使容器被删除,数据也不会丢失。设置root密码:在
docker中安装mysql时要注意哪些事项
2024-04-27

编程热搜

目录