文档详情

MySQL数据库管理第8章-查询表中的数据.ppt

发布:2016-07-28约1.58万字共109页下载文档
文本预览下载声明
例如检索书名或者简介中涉及到practices单词的所有图书信息,可以使用下面的SQL语句。 select * from book where match (name,brief_introduction) against (practices)\G 5.10.1 全文检索的简单应用 例如检索书名或者简介中涉及到practices或者cookbook单词的所有图书信息,可以使用下面的SQL语句。 select * from book where match (name,brief_introduction) against (practices cookbook)\G 5.10.1 全文检索的简单应用 检索书名或者简介中涉及到mysql单词的所有图书信息,将检索失败。 MySQL在进行全文检索时,默认情况下将忽略权重超过50%的记录,50%称为阈值(注意读作:yù zhí), 因此检索失败。 5.10.1 全文检索的简单应用 如果希望忽略阈值的因素,例如检索书名或者简介中涉及到“mysql”单词的所有图书信息,可以使用下面的SQL语句,执行结果如图5-66所示,该SQL语句使用了布尔检索模式(稍后讲解)。 select * from book where match (name,brief_introduction) against (mysql in boolean mode)\G 5.10.1 全文检索的简单应用 检索书名或者简介中涉及到php单词的所有图书信息,将检索失败。 这是由于MySQL全文检索对搜索关键字的最小(默认值为4)以及最大长度(默认值为84)进行了设置。 5.10.1 全文检索的简单应用 检索书名或者简介中涉及到that单词的所有图书信息,将检索失败。 这是由于MySQL内置了(built-in)545个停用词,其中包括has、all、be、been、that等单词。 5.10.1 全文检索的简单应用 常用的全文检索方式有三种:自然语言检索、布尔检索以及查询括展检索。 (1)自然语言检索(in natural language mode) 自然语言检索是全文检索中的默认类型,只能进行单表查询,但存在阈值的限制。 5.10.2 全文检索方式 (2)布尔检索(in boolean mode) 布尔检索没有阈值的限制,且可以进行多表查询,还可以包含特定意义的操作符,如 +、-、、等。 5.10.2 全文检索方式 (3)查询括展检索(with query expansion) 查询括展检索是对自然语言检索的一种改动(自动关联度反馈),当查询短语太短时有用。先进行自然语言检索,然后把关联度较高的记录中的词添加到搜索关键字中进行二次自然语言检索,然后返回查询结果集。 5.10.2 全文检索方式 布尔检索模式的against子句中,可以在搜索关键字前添加特定意义的操作符,进行复杂语法的全文检索,常用的全文检索操作符如表所示。 5.10.3 布尔检索模式的复杂应用 禁用自定义的停用字,重启MySQL服务器,并重建全文索引后,检索书名或者简介中涉及“mysql”但不涉及“php”单词的的所有图书信息,可以使用下面的SQL语句。 select * from book where match (name,brief_introduction) against (+mysql -php in boolean mode)\G 5.10.3 布尔检索模式的复杂应用 MySQL并不支持中文全文索引。 在自然语言检索中,只能检索被全文索引的那些字段,如果要对索引的多个字段进行某一字段的检索,必须对该字段创建单独的全文索引。布尔检索可以在非全文索引的字段上进行,但检索效率会降低。 5.10.4 MySQL全文检索的注意事项 全文检索没有记录关键词在字符串中的位置,排序算法比较单一。 全文检索不支持前缀索引。 全文检索会降低更新操作(insert、update以及delete)的效率。 5.10.4 MySQL全文检索的注意事项 InnoDB与MyISAM存储引擎实现全文检索的方法不同,同样的全文检索SQL语句,同样结构的表,相同的表记录,全文检索的返回结果可能不同。 任务布置9:完成本书场景描述8的任务要求。并分析InnoDB全文检索与MyISAM全文检索的区别。 5.10.5 InnoDB表的全文检索 Thanks + having子句用于设置分组或聚合函数的过滤筛选条件,having子句通常与group by子句一起使用。having子句语法格式与where子句语法格式类似
显示全部
相似文档