18.1 理解全文本搜索
mysql指出几种不同的数据库引擎,包括myisam和innodb,前者支持全文本搜素,但是后者不指出。
全文本搜索的关键词是fulltext。
18.2 何时定义fulltext
如果你正在导入数据到一个新表,先不要启用fulltext索引,因为这样数据库会一条一条维护索引。应当在数据导入完毕后,一次性建立全文本索引。
18.3 全文本搜索的格式
在对某列建立索引之后,全文本搜索主要使用match()和against()两个函数,如下:
select note_text from products where match(note_text) against('rabbit');
其中的match指定被搜索的列,而against指定搜索模式串
除非使用binary方式,否则全文本搜索不区分大小写。
18.4 将match()和aginst()作为计算字段
select note_text , match(note_text) against('rabbit') as rank from products;
18.4 放宽条件的扩展全文本查询(with query expansion)
原理:进行两次查询,第一次用模式串进行全文本查询,然后统计有用的词,第二次再用这些有用的此进行一次查询。
18.5 布尔文本搜索(没有建立全文本搜索索引也可以用)
布尔文本搜索可以指定:
- 要匹配的词
- 要排斥的词
- 排列的优先级提示
- 表达式分组
示例用法:
select note_text from productnotes where match(note_text) against('heavy -rope' in boolean mode);
上述sql语句意味着,包含heavy但是不包含以rope开头的词的行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏