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)行数少于三行忽略

 

 

posted @ 2019-11-06 17:06  贾力  阅读(621)  评论(0编辑  收藏  举报