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语句
- 如何将uuid存储为数字? 2021-01-01
- HEROKU - 无法运行 git push heroku master 2021-01-01
- MySql 错误 150 - 外键 2021-01-01
- 在 Oracle 中创建 CTE 2022-01-01
- Oracle SQL 转置 2022-01-01
- MySQL(Windows10)使用 MyISAM 表进行 FULLTEXT 搜索不起作用 2022-01-01
- 如何在oracle中获取字符串最右边的10个位置 2021-01-01
- SQL Server 将 Varchar 转换为日期时间 2021-01-01
- 创建索引时,具有 mysql 数据库迁移的实体框架失败 2022-01-01
- SSMS 中的权限问题:“对象 'extended_properties'、数据库 'mssqlsystem_resource'、... 错误 229)上的 SELECT 权限被拒绝" 2022-01-01