全文搜索(FTS)是搜索引擎用来在其数据库中查找结果的技术之一。你也可以利用FTS的功能来搜索对于Like运算符而言过于复杂的模式。在今天的博客中,我们将学习如何在MySQL中应用全文搜索。在第2部分中,我们将使用Navicat for MySQL作为我们的数据库客户端尝试进行一些查询。
全文搜索解释
FTS的目的是获取那些搜索条件与文本数据仅仅是松散匹配的文档。 因此,搜索“cars and truck”,将返回分别包含两个词汇的结果,例如“cars”或“trucks”,或者包含不同顺序的词汇(“truck and cars”),或包含搜索词汇的变体,例如 “car”和“truck”(单数形式)。这使企业可以猜测用户正在搜索什么,并在更快的时间内返回更相关的结果。
像MySQL这样的数据库管理系统(DBMS)确实允许使用LIKE表达式进行准文本查找。 但是,Like子句有一些缺点:
- 它们在大型数据集上往往表现不佳。
- 它们受限于完全匹配用户输入,这意味着即使实际上存在相关信息的记录,查询也可能不会返回任何结果。
MySQL中的全文搜索
为了在MySQL中执行全文搜索,你必须在支持全文搜索的字段中添加FULLTEXT索引。 此外,全文索引只能与MyISAM和InnoDB表一起使用。最后,请注意,只有字段类型为CHAR,VARCHAR或TEXT的列才能创建全文索引。在CREATE TABLE语句中可以给出FULLTEXT索引定义,或者稍后使用ALTER TABLE或CREATE INDEX命令添加。大型数据集的提示:相比先创建FULLTEXT索引然后再加载数据,将数据先加载到没有FULLTEXT索引的表中,然后再创建索引,这样会快得多。
全文搜索分为三种不同的类型:
- 自然语言全文搜索
- 布尔型全文搜索
- 查询扩展搜索
在第2部分中的清单中,我们将依次介绍这些内容。
一个基本例子
在Sakila示例数据库中,film表中包含了有关商店电影收藏中每部电影的信息,包括其标题、放映时间和描述。我们可以使用“表单视图”详细查看film表记录。只有完整版本提供表单视图功能,可让我们以表单的形式查看、更新、插入或删除数据,其中当前记录以详细信息显示。还有导航栏可以让我们在记录之间快速切换。
通过将FULLTEXT索引添加到描述列,我们可以在其上添加全文搜索功能。我们可以发出ALTER TABLE或CREATE INDEX命令,但是Navicat有一种更简单的方法!表设计器包含许多与不同表对象有关的选项卡。其中包括列定义、索引、外键、触发器和选项等。我们可以通过使用“字段选择器”对话框选择描述字段,在描述字段上添加全文索引,然后从“索引类型”下拉列表中选择“全文”:
请确保将索引方法留空。
单击保存按钮以创建新索引:
总结
现在,我们已经为全文搜索准备了数据库,我们将在第2部分中学习如何使用全文搜索功能。
对Navicat for MySQL感兴趣吗?你可以免费试用 14天。