MySQL的MATCH() AGAINST()是用于全文搜索的函数。它可以搜索包含指定关键字的记录,并返回相关度得分以进行排序。 MATCH()函数的语法如下: MATCH (col1,col2,...) AGAINST ('keyword' [search_modifier]) 其中,col...
MySQL的MATCH() AGAINST()是用于全文搜索的函数。它可以搜索包含指定关键字的记录,并返回相关度得分以进行排序。
MATCH()函数的语法如下:
MATCH (col1,col2,…) AGAINST (‘keyword’ [search_modifier])
其中,col1、col2等是要搜索的列名,keyword是要搜索的关键词。search_modifier是可选的,用于指定搜索模式和其他参数。
AGAINST()函数的语法如下:
AGAINST (‘keyword’ [search_modifier])
其中,keyword是要搜索的关键词,search_modifier是可选的,用于指定搜索模式和其他参数。
MATCH() AGAINST()函数的使用步骤如下:
为要搜索的列创建全文索引:
CREATE FULLTEXT INDEX index_name ON table_name(col1,col2,…);
使用MATCH() AGAINST()函数进行搜索:
SELECT * FROM table_name WHERE MATCH(col1,col2,…) AGAINST(‘keyword’);
其中,index_name是索引的名称,table_name是表名,col1、col2等是要搜索的列名,keyword是要搜索的关键词。
在使用MATCH() AGAINST()函数时,可以使用以下搜索修饰符:
IN NATURAL LANGUAGE MODE:自然语言模式,适用于普通文本搜索。
IN BOOLEAN MODE:布尔模式,适用于更复杂的搜索,可以使用布尔运算符和通配符。
WITH QUERY EXPANSION:用于扩展搜索,将搜索结果扩展到相关的单词和短语。
以下是一个简单的例子,使用MATCH() AGAINST()函数搜索包含“apple”关键字的记录:
CREATE TABLE fruits (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
description TEXT,
FULLTEXT(name,description)
);
INSERT INTO fruits (name, description)
VALUES ('apple', 'A fruit that is round and red'),
('banana', 'A long yellow fruit'),
('orange', 'A citrus fruit that is orange');
SELECT * FROM fruits WHERE MATCH(name,description) AGAINST('yellow');
在这个例子中,创建了一个名为fruits的表,并为其name和description列创建了全文索引。然后使用MATCH() AGAINST()函数搜索包含“apple”关键字的记录。输出结果应该只包含包含“apple”关键字的记录。
注意:以上案例建立的全文索引实际上是mysql给我们建立了倒排索引,倒排索引就是对字段内容进行了分词,那么这里如果改成AGAINST(‘yello’)就搜索不到数据,因为yellow是一个词,使用yello就匹配不上
本文标题为:MySQL优化like语句
基础教程推荐
- 如何将参数传递给使用 sqlcmd 调用的 SQL Server 脚本? 2021-01-01
- 哪个是 Rails 应用程序的最佳数据库? 2022-01-01
- my.cnf 文件在 macOS 上的位置 2021-01-01
- 替换存储在 SQL Server 数据库列中的 XML 中的节点名 2021-01-01
- (+) 在 Oracle SQL 中有什么作用? 2021-01-01
- 如何在没有密码提示的情况下执行 mysqldump? 2021-01-01
- 为 SQL Server 设置 Maven 依赖项 2021-01-01
- Sql*plus 总是返回退出代码 0? 2021-01-01
- 与不使用派生表的查询相比,使用派生表的查询 2021-01-01
- SSIS:在数据流中使用 System::TaskName 2021-01-01