教您如何实现MySQL全文查询


  本文标签:MySQL全文查询

  MySQL全文查询的方法并不难,下面就为您详细介绍MySQL全文查询的实现方法,希望对您学习MySQL全文查询方面能够有所帮助  。

  到3.23.23时,MySQL开始支持全文索引和搜索  。全文索引在MySQL中是一个FULLTEXT类型索引  。FULLTEXT索引用于 MyISAM 表,可以在CREATE TABLE时或之后使用ALTER TABLE或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上创建  。对于大的数据库,将数据装载到一个没有FULLTEXT索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的  。将数据装载到一个已经有FULLTEXT索引的表中,将是非常慢的  。

  全文搜索通过 MATCH() 函数完成  。

  1. mysql> CREATE TABLE articles (   
  2. -> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,   
  3. -> title VARCHAR(200),   
  4. -> body TEXT,   
  5. ->FULLTEXT(title,body)   
  6. -> );   
  7. Query OK, 0 rows affected (0.00 sec)  
  8.  
  9. mysql> INSERT INTO articles VALUES   
  10. -> (NULL,\MySQLTutorial\, \DBMS stands for DataBase ...\),   
  11. -> (NULL,\How To UseMySQLEfficiently\, \After you went through a ...\),   
  12. -> (NULL,\OptimisingMySQL\,\In this tutorial we will show ...\),   
  13. -> (NULL,\1001MySQLTricks\,\1. Never runMySQLd as root. 2. ...\),   
  14. -> (NULL,\MySQLvs. YourSQL\, \In the following database comparison ...\),   
  15. -> (NULL,\MySQLSecurity\, \When configured properly,MySQL...\);   
  16. Query OK, 6 rows affected (0.00 sec)   
  17. Records: 6 Duplicates: 0 Warnings: 0   
  18.  
  19. mysql> SELECT * FROM articles   
  20. -> WHERE MATCH (title,body) AGAINST (\database\);   
  21. +----+-------------------+------------------------------------------+   
  22. | id | title | body |   
  23. +----+-------------------+------------------------------------------+   
  24. | 5 |MySQLvs. YourSQL | In the following database comparison ... |   
  25. | 1 |MySQLTutorial | DBMS stands for DataBase ... |   
  26. +----+-------------------+------------------------------------------+   
  27. 2 rows in set  
  28.    
  29.