mysqlfulltext的简单介绍
简介:
MySQL Fulltext是MySQL的一种全文搜索功能,它可以在给定的表中搜索匹配一个或多个关键字的行。在建立Fulltext索引的表中使用全文搜索功能,会获得更快速和更准确的查询结果。
多级标题:
一、建立Fulltext索引的表
二、使用全文搜索
三、完全匹配和部分匹配
四、使用Boolean全文搜索
五、完全匹配和Boolean全文搜索的比较
六、查询性能的影响
七、总结
一、建立Fulltext索引的表:
Fulltext索引只能被用于MyISAM存储引擎的表中,InnoDB存储引擎不支持Fulltext索引,因此在使用Fulltext索引功能时,需要使用MyISAM表。在创建表时添加Fulltext索引的语法示例如下:
```
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
) ENGINE=MyISAM;
```
二、使用全文搜索:
使用全文搜索时,在SELECT语句中使用MATCH AGAINST语句来搜索匹配的行。以下是一个使用Fulltext搜索的示例查询:
```
SELECT * FROM articles WHERE MATCH(title,body) AGAINST ('MySQL Fulltext' IN NATURAL LANGUAGE MODE);
```
以上代码会搜索articles表中同时包含“MySQL”和“Fulltext”这两个关键字的行。
三、完全匹配和部分匹配:
在使用Fulltext搜索时,可以使用完全匹配和部分匹配。完全匹配指的是完全匹配查询中所提供的词汇,而部分匹配则指的是一定程度上与查询所提供的词汇匹配的结果。以下是一个部分匹配的示例查询:
```
SELECT * FROM articles WHERE MATCH(title) AGAINST ('MySQL fun' IN NATURAL LANGUAGE MODE);
```
以上代码会搜索articles表中包含“MySQL”和类似“fun”的词汇的所有行。
四、使用Boolean全文搜索:
MySQL也支持使用Boolean全文搜索,这种搜索方式允许在查询中使用AND,OR和NOT等逻辑运算符。以下是一个使用Boolean全文搜索的示例查询:
```
SELECT * FROM articles WHERE MATCH(title,body) AGAINST ('MySQL OR Fulltext' IN BOOLEAN MODE);
```
以上代码会搜索articles表中包含“MySQL”或“Fulltext”这两个关键词的行。
五、完全匹配和Boolean全文搜索的比较:
完全匹配比较准确,但不灵活,无法捕捉同义词。而Boolean全文搜索则具备灵活性,可以通过使用逻辑运算符捕捉同义词和相关词汇。但是,因为在Boolean全文搜索中没有使用匹配度度量,所以查询结果可能会与实际情况不太吻合。
六、查询性能的影响:
使用Fulltext搜索可以是查询更快,但它也有可能使查询变得更慢。如果你的表中有大量的行和Fulltext索引,则这种索引会占用大量的内存和磁盘空间。在这种情况下,Fulltext搜索可能会使查询变慢。
七、总结:
MySQL Fulltext索引提供了强大而灵活的全文搜索功能。Fulltext搜索支持完全匹配和部分匹配,还支持Boolean全文搜索。虽然Fulltext搜索可以使查询更快,但也有可能会使查询变慢。因此,在使用Fulltext搜索时,应该根据情况进行权衡,并选择合适的Fulltext搜索方式。