摘要:在本教程中,您将了解 MySQL 全文搜索及其功能。
如果您使用过 Google 或 Bing 等搜索引擎,那么您就使用过全文搜索或 FTS。搜索引擎将网站上的内容收集到数据库中,并允许您根据关键字进行搜索。
除了搜索引擎之外,FTS 还为博客、新闻、电子商务等网站上的搜索结果提供支持。
全文搜索是一种搜索与搜索条件不完全匹配的文档的技术。文档是包含文本数据的数据库实体,例如产品描述、博客文章和文章。
例如,您可以搜索Wood and Metal
,FTS 可以返回单独包含搜索词(仅Wood
或Metal
的结果,或者返回包含不同顺序的词Word and Metal
或Metal and Wood
的结果。
从技术上讲,MySQL支持使用LIKE
运算符和正则表达式进行部分文本搜索。但是,当文本列很大并且表中的行数增加时,使用LIKE
或正则表达式有一些限制:
表现
MySQL 必须扫描整个表,以根据LIKE
语句中的模式或正则表达式中的模式找到确切的文本。
灵活搜索
LIKE
和正则表达式都可以通过匹配模式进行搜索。很难进行灵活的搜索查询,例如查找描述包含car
但不包含classic.
相关性排名
无法指定结果集中的哪一行与搜索词更相关。
由于这些限制,MySQL 在 5.6 中开始支持全文搜索。
MySQL 从文本数据创建FULLTEXT
索引,并使用复杂的算法查找该索引,以确定与搜索查询匹配的行。
MySQL全文检索功能
以下是MySQL全文搜索的一些重要功能:
类似本机 SQL 的接口
MySQL提供类似SQL的语句来执行全文搜索。
全动态索引
当文本列的数据发生变化时,MySQL 会自动更新该列的索引。
索引大小适中
FULLTEXT
索引的大小相对较小。
速度
最后但并非最不重要的一点是,基于复杂搜索查询的搜索速度很快。
请注意,并非所有存储引擎都支持全文搜索功能。在MySQL 5.6或更高版本中,只有MyISAM和InnoDB存储引擎支持全文搜索。
在本教程中,您了解了 MySQL 全文搜索及其功能。