标签:
原文链接 http://blog.csdn.net/manbujingxin/article/details/6656992
前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索。
假定数据表名为post,有三列:id、title、content。id是自增长序号,
title是varchar,content是text,给content添加全文索引。
mysql全文搜索有三种模式:
一、自然语言查找。这是mysql默认的全文搜索方式,sql示例:
1 |
select id,title FROM post WHERE MATCH(content) AGAINST ( ‘search keyword‘ ) |
或者显式声明使用自然语言搜索方式
1 |
select id,title FROM post WHERE MATCH(content) AGAINST ( ‘search keyword‘ IN NATURAL LANGUAGE MODE) |
由于自然语言搜索方式是默认模式,所以可以省略声明模式的“IN NATURAL LANGUAGE MODE”部分。
自然语言搜索模式的么特点:
二、布尔查找。这种查找方式的特点是没有自然查找模式中的50%规则,即便有词语在数据集中频繁出现的几率超过50%,
也会被作为搜索目标进行检索并返回结果,而且检索时单词的局部匹配也会被作为目标进行检索。sql示例
1 |
select id,title FROM post WHERE MATCH(content) AGAINST ( ‘search keyword‘ IN BOOLEAN MODE) |
三、带子查询扩展的自然语言查找。
1 |
select id,title FROM post WHERE MATCH(content) AGAINST ( ‘search keyword‘ IN BOOLEAN MODE WITH EXPANSION) |
暂时没有明白这种模式。
在我的实际使用中还发现了以下细节:
【转】 Mysql全文搜索match...against的用法
标签:
原文地址:http://www.cnblogs.com/ihongyan/p/4712259.html