关于MySQL的FULLTEXT实现全文检索的注意事项

对于英文,MySQL的FULLTEXT属性来实现全文检索是相当方便且高效的,但是在使用过程中需要注意一些事项。

首先对我们对需要进行检索的字段添加FULLTEXT属性(假设已经建表):

[sql collapse=”false”]
alter table table_name add fulltext index(filed_1,filed_2);
[/sql]
接下来查询数据:
[sql collapse=”false”]
SELECT * FROM table_name WHERE MATCH (filed_1,filed_2) AGAINST (‘keyword’);
[/sql]
此处涉及到一个很重要的注意事项:

MySQL规定全文搜索中被搜索的单词所在的行数大于等于被搜索的所有行数的一半时候,就将被搜索单词作为Common word,即不被显示。(具体条件需要查阅资料确定)

因此,假设在测试的时候,表中只有一行数据,所以无论怎么执行上述查询语句,返回的结果总是为空。不必惊慌,多加几条没有待查关键词的数据就会有结果啦~

当然,MySQL提供了更加强大的查询结果过滤:
[sql collapse=”false”]
SELECT * FROM table_name WHERE MATCH (filed_1,filed_2) AGAINST (‘+keyword_1 -keyword_2’ IN BOOLEAN MODE);
[/sql]

这样,就会返回包含keyword_1的数据,而包含keyword_2的数据就会被过滤掉。

发表评论

电子邮件地址不会被公开。