为全文搜索创建全文索引
简介:在本教程中,您将学习如何定义全文索引,以在MySQL中执行各种全文搜索。
在表的列中执行全文搜索之前,必须索引其数据。
每当列的数据更改时,MySQL都会重新创建全文索引。
在MySQL中,全文索引是一种名为FULLTEXT的索引。
MySQL支持为全文搜索启用的列自动建立数据索引和重新索引。
MySQL 5.6或更高版本允许您为MyISAM和InnoDB表类型中数据类型为CHAR,VARCHAR或TEXT的列定义全文索引。
注意,从版本5.6开始,MySQL仅支持InnoDB表的全文本索引。
MySQL允许您在创建表或为现有表创建ALTER TABLE或CREATE INDEX语句时使用CREATE TABLE语句定义FULLTEXT索引。
使用CREATE TABLE语句创建FULLTEXT索引
通常,使用CREATE TABLE语句创建新表时,您可以为列定义FULLTEXT索引,如下所示:
CREATE TABLE table_name( column_list, ..., FULLTEXT (column1,column2,..) );
若要创建FULLTEXT索引,请在FULLTEXT关键字后的括号中放置一个逗号分隔的列名称列表。
以下语句创建一个名为posts的新表,该表的FULLTEXT索引包括post_content列。
CREATE TABLE posts ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(255) NOT NULL, body TEXT, PRIMARY KEY (id), FULLTEXT KEY (body ) );
使用ALTER TABLE语句创建FULLTEXT索引
以下语法使用ALTER TABLE语句定义了FULLTEXT索引:
ALTER TABLE table_name ADD FULLTEXT(column_name1, column_name2,…)
用这种语法,
首先,在ALTER TABLE关键字之后指定要创建索引的表的名称。
其次,使用ADD FULLTEXT子句为表的一个或多个列定义FULLTEXT索引。
例如,您可以为示例数据库的产品表中的productDescription和productLine列定义FULLTEXT索引,如下所示:
ALTER TABLE products ADD FULLTEXT(productDescription,productLine)
使用CREATE INDEX语句创建FULLTEXT索引
您还可以使用CREATE INDEX语句使用以下语法为现有表创建FULLTEXT索引:
CREATE FULLTEXT INDEX index_name ON table_name(idx_column_name,...)
例如,以下语句为offices表的addressLine1和addressLine2列创建一个FULLTEXT索引:
CREATE FULLTEXT INDEX address ON offices(addressLine1,addressLine2)
请注意,对于具有许多行的表,将数据首先加载到没有FULLTEXT索引的表中然后再创建FULLTEXT索引要比将大量数据加载到具有现有FULLTEXT索引的表中更快。
删除FULLTEXT索引
要删除FULLTEXT索引,请使用ALTER TABLE DROP INDEX语句。
ALTER TABLE table_name DROP INDEX index_name;
例如,以下语句从office表中删除地址索引:
ALTER TABLE offices DROP INDEX address;
在本教程中,您向您展示了如何创建支持MySQL中全文搜索的FULLTEXT索引。