MST

星途 面试题库

面试题:MySQL全文检索如何实现基本的文本搜索

在MySQL中,假设你有一个存储文章内容的表,表结构为`articles(id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255), content TEXT)`,请阐述如何为`content`字段实现全文检索来搜索包含特定关键词的文章,并给出实现的SQL语句。
46.9万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试
  1. 步骤一:修改表结构以支持全文索引
    • 首先,需要确保MySQL版本支持全文索引(一般较新的版本都支持)。对于上述articles表,要先将content字段的数据类型修改为TEXTVARCHARVARCHAR长度需合理设置),并且添加全文索引。
    • 如果表还未创建,可以使用如下CREATE TABLE语句创建带有全文索引的表:
CREATE TABLE articles (
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255),
    content TEXT,
    FULLTEXT(content)
);
  • 如果表已经存在,可以使用ALTER TABLE语句添加全文索引:
ALTER TABLE articles ADD FULLTEXT(content);
  1. 步骤二:使用全文检索进行查询
    • 在MySQL中,使用MATCH AGAINST语法进行全文检索。假设要搜索包含关键词example的文章,可以使用如下SQL语句:
SELECT * FROM articles
WHERE MATCH(content) AGAINST('example' IN NATURAL LANGUAGE MODE);
  • 如果需要更精确的搜索,例如使用IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION:
SELECT * FROM articles
WHERE MATCH(content) AGAINST('example' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION);
  • 也可以指定字符集,例如:
SELECT * FROM articles
WHERE MATCH(content) AGAINST('example' IN 'utf8mb4' NATURAL LANGUAGE MODE);