MySQL的全文检索
转载请注明出处 😃!
手动反爬:MySQL的全文检索(MyISAM,MATCH AGAINST)
https://blog.csdn.net/Lyun911/article/details/111460906
注:以下使用 MySQL 演示
1 简介
虽然之前学过的搜索机制非常有用,但存在几个重要的限制(通配符和正则表达式,WHERE和LIKE):
- 性能——通配符和正则表达式匹配通常要求MySQL尝试匹配表中所有行(而且这些搜索极少使用表索引)。因此,由于被搜索行数不断增加,这些搜索可能非常耗时。(大量大概可以定义为10G以上)
- 明确控制——使用通配符和正则表达式匹配,很难(而且并不总是能)明确地控制匹配什么和不匹配什么。例如,指定一个词必须匹配,一个词必须不匹配,而一个词仅在第一个词确实匹配的情况下才可以匹配或者才可以不匹配。
所有这些限制以及更多的限制都可以用全文本搜索来解决。在使用全文本搜索时,MySQL不需要分别查看每个行,不需要分别分析和处理每个词。
全文搜过通过MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行。这样,MySQL可以快速有效地决定哪些词匹配,哪些词不匹配,它们匹配的频率,等等。(WHERE和RE做不到)
存储机制 | 全文索引 | 类型 | 适用于 |
---|---|---|---|
Innodb | 不支持 | 事务性 | 业务表(比如用于模糊查询) |
MyISAM | 支持 | 数据型 | 数据表 |
productnote | 支持 | 数据型 | 数据表 |
2 案例
2.1 启用全文索引
注意:不要将业务类的主要表开启MyISAM!
2.1.1 查看并启用表的存储机制类型(Navicat):
2.1.2 查看并启用表的存储机制类型(CMD):
CREATE TABLE productnotes
(
note_id int NOT NULL AUTO_INCREMENT,
prod_id char(10) NOT NULL,
note_date datetime NOT NULL,
note_text text NU