Archive

Posts Tagged ‘创建fulltext索引’

mysql全文搜索索引的使用方法含创建、删除及查询语句

November 14th, 2011 admin No comments

最近做了个tags标签扩展关键词功能,导入tags成功后,前台数据根据tags关键词查询出相关产品和相关文章,mysql select查询用like语句来执行查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时候。我们只需要简单地标记出需要全文查找的字段,然后使用特殊的MySQL方法在那些字段运行搜索,这不仅仅提高了性能和效率(因为MySQL对这些字段做了索引来优化搜索),而且实现了更高质量的搜索,因为MySQL使用自然语言来智能地对结果评级,以去掉不相关的项目。

今天蓝水来介绍mysql全文搜索索引的使用方法:

创建fulltext索引

:ALTER TABLE 表名 ADD FULLTEXT INDEX (表字段);

使用SHOW INDEXES命令来检查索引已经被添加拥有了数据和索引,就可以使用MySQL的全文搜索了,最简单的全文搜索方式是带有MATCH…AGAINST语句的SELECT查询:SELECT 表字段 FROM 表名 WHERE MATCH (全文搜索表字段) AGAINST (‘搜索字符串’);

最后显示结果
例子:
创建索引:

mysql> ALTER TABLE product ADD FULLTEXT INDEX (pro_name);

查询索引是否生效:

mysql> SHOW INDEXES FROM product;

注意事项:


一个表同时添加几个fulltext索引的话,如果按照上面的语句一个一个添加的话,索引查询的时候就会出错:
#1191 – Can’t find FULLTEXT index matching the column list
关于MySQL 返回:#1191 – Can’t find FULLTEXT index matching the column list的解决办法!如下:
自己的测试只能对一个表创建一个fulltext 索引

如何删除FULLTEXT索引

DROP INDEX index_name ON tbl_name
DROP INDEX用于从表tbl_name中取消名称为index_name的索引。本语句被映射到一个ALTER TABLE语句中,用于取消索引。
我的例子:mysql> DROP INDEX pro_text ON product

FULLTEXT查询语句:


mysql>select * from product where MATCH (pro_text) AGAINST (‘关键词’) limit 20
pro_text是全文索引的字段

到这里mysql全文搜索索引的使用方法含创建、删除及查询语句都全了,希望本文对大家有所帮助。也希望多多探讨。