
文章插图
demo6:*
SELECT* FROM`fts_articles` WHEREMATCH ( title, body ) AGAINST ( 'My*' IN BOOLEAN MODE );上述语句,查询关键字中包含'My'的行信息 。
文章插图
demo7:"
SELECT* FROM`fts_articles` WHEREMATCH ( title, body ) AGAINST ( '"MySQL Security"' IN BOOLEAN MODE );上述语句,查询包含确切短语 'MySQL Security' 的行信息 。
文章插图
Query Expansion查询扩展搜索是对自然语言搜索的修改,这种查询通常在查询的关键词太短,用户需要 implied knowledge(隐含知识)时进行,例如,对于单词 database 的查询,用户可能希望查询的不仅仅是包含 database 的文档,可能还指那些包含 MySQL、Oracle、RDBMS 的单词,而这时可以使用 Query Expansion 模式来开启全文检索的 implied knowledge
通过在查询语句中添加 WITH QUERY EXPANSION / IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION 可以开启 blind query expansion(又称为 automatic relevance feedback),该查询分为两个阶段 。
- 第一阶段:根据搜索的单词进行全文索引查询
- 第二阶段:根据第一阶段产生的分词再进行一次全文检索的查询
-- 创建索引create FULLTEXT INDEX title_body_index on fts_articles(title,body);-- 使用 Natural Language 模式查询SELECT* FROM`fts_articles` WHEREMATCH(title,body) AGAINST('database');使用 Query Expansion 前查询结果如下:
文章插图
-- 当使用 Query Expansion 模式查询SELECT* FROM`fts_articles` WHEREMATCH(title,body) AGAINST('database' WITH QUERY expansion);使用 Query Expansion 后查询结果如下:
文章插图
由于 Query Expansion 的全文检索可能带来许多非相关性的查询,因此在使用时,用户可能需要非常谨慎 。
删除全文索引1、直接删除全文索引语法如下:
DROP INDEX full_idx_name ON db_name.table_name;2、使用 alter table 删除全文索引语法如下:ALTER TABLE db_name.table_name DROP INDEX full_idx_name;推荐阅读
- 缓存穿透解决方案
- Prometheus + Granafa 构建MySQL监控平台
- MySQL死锁分析:记一次因索引合并导致的MySQL死锁分析过程
- MySQL 读写分离
- 数据库MYSQL的查询
- MySQL 8.0新特性之隐藏字段的深入讲解
- 想MYSQL数据库运维高效,这些开发规范总结,参考着用
- ubuntu18.04中Mysql5.7数据库安装及远程登录
- MySQL不同版本多实例部署
- 对MySQL底层索引深度解析
