利用MySQL内置函数实现全文搜索功能2010-08-23MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION])MySQL支持全文索引和搜索功能。MySQL中的全文索引类型FULLTEXT的索引。 FULLTEXT 索引仅可用于 MyISAM 表;他们可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或 CREATE INDEX被添加。对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引,其速度比把资料输入现有FULLTEXT索引的速度更为快。全文搜索同MATCH()函数一起执行。mysql> CREATE TABLE articles ( -> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, -> title VARCHAR(200), -> body TEXT, -> FULLTEXT (title,body) -> ); Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO articles (title,body) VALUES -> ("MySQL Tutorial","DBMS stands for DataBase ..."), -> ("How To Use MySQL Well","After you went through a ..."), -> ("Optimizing MySQL","In this tutorial we will show ..."), -> ("1001 MySQL Tricks","1. Never run mysqld as root. 2. ..."), -> ("MySQL vs. YourSQL","In the following database comparison ..."), -> ("MySQL Security","When configured properly, MySQL ..."); Query OK, 6 rows affected (0.00 sec) Records: 6 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM articles -> WHERE MATCH (title,body) AGAINST ("database"); +----+-------------------+------------------------------------------+ | id | title | body | +----+-------------------+------------------------------------------+ | 5 | MySQL vs. YourSQL | In the following database comparison ... | | 1 | MySQL Tutorial | DBMS stands for DataBase ... | +----+-------------------+------------------------------------------+ 2 rows in set (0.00 sec)