在第1部分中,我们了解了MySQL如何通过FULLTEXT索引以及三种不同类型的全文搜索提供全文搜索功能。 在今天的博客中,我们将学习如何在Navicat for MySQL中用自然语言进行全文搜索。
自然语言全文搜索的定义
自然语言全文搜索的逻辑是寻找与自然人类语言查询相关的文档(行),例如“自然语言全文搜索如何工作?”。 如果你曾经使用过像Google这样的搜索引擎,它就是这样工作的!
使用零加正浮点数确定相关性,其中零表示没有相似性。 相关性可以基于各种因素,包括文档中词汇的数量,文档中唯一词汇的数量,集合中词汇的总数以及包含特定词汇的文档(行)的数量。
MySQL自然语言全文搜索示例
在MySQL中,使用MATCH()和AGAINST()函数进行自然语言全文搜索。 MATCH()函数指定要搜索的列,而AGAINST()函数确定要使用的搜索表达式。
Sakila示例数据库代表一个虚构的DVD出租商店。 film表包含有关商店藏品中每部电影的相关信息。 列包括电影标题、发行年份、放映时间和描述。这是Navicat的“表单视图”中的示例行。 它允许你以表格的形式查看,更新,插入或删除数据,其中当前记录显示为字段名称及其值:
索引description列
为了以全文本模式搜索description字段,我们首先必须在表上创建全文索引。我们可以在Navicat中轻松地做到这一点,如下所示:
- 在表设计器中打开film表。
- 选择“索引”选项卡。
- 点击“添加索引”按钮。
- 让我们重命名索引名称为“idx_description”。
- 在“字段”文本框中,选择description列。
- 从“索引类型”下拉列表中选择FULLTEXT:
- 将“索引方法”留空,因为FULLTEXT索引不需要索引方法。
- 最后,点击“保存”按钮用来创建索引。
查询用时
让我们打开查询编辑器并编写一个查询,该查询将查找其 description 包含短语“Database Administrator”的行。 Navicat可以通过建议字段名称甚至我们需要的函数来帮助我们编写查询::
这是短语“Database Administrator”的最终查询结果。 我们会惊讶的发现关于数据库管理员的电影数量很多!
查看分数
如上所述,使用零加正浮点数确定相关性,其中零表示没有相似性。 我们可以通过将MATCH()和AGAINST()函数添加到列列表中来查看每个记录的分数,例如:
这将有助于我们确定最接近的匹配值的截止点。
总结
在今天的博客中,我们学习了如何在Navicat for MySQL中进行自然语言全文搜索。
对Navicat for MySQL感兴趣吗? 你可以点击以下链接下载并免费试用 14天!