MySQL:全文本搜索
只有MyISAM引擎支持全文本搜索(索引被搜索的文本列),比like和正则表达式更智能,查询更快。
创建表时在建表语句括号中增加FULLTEXT(note_text),就可以支持对note_text列的全文本搜索。
1、全文本搜索指定词
例1:搜索指定词rabbit
SELECT note_id,note_text FROM productnotes WHERE MATCH(note_text) AGAINST('rabbit')
结果:
按照匹配等级排序,如上例中出现在第3个词的行比出现在第20个词的行等级高。
2、查询扩展
例2:找到可能与搜索出的含anvils词有关的所有行
SELECT note_id,note_text FROM productnotes WHERE MATCH(note_text) AGAINST('anvils' WITH QUERY EXPANSION)
结果集的第一行含有anvils,包含第一行中其他词的行也可能被查询出来,增加了返回结果。
3、布尔模式智能搜索
例:包含heavy且不以rope开头的词的所有行。
SELECT note_text FROM productnotes WHERE MATCH(note_text) AGAINST('heavy-rope*')
4、一些规则
(1)3个字符以下的短词忽略
(2)出现在50%以上的行中的词忽略
(4)忽略单引号 can't索引cant
(5)行数少于三行忽略