去年有小伙伴在 asktug.com 论坛讨论 TiDB 是否支持 全文搜索 (Full-text search)。

其实这个需求早在 2016 年的时候就已经提出。

十年磨一剑,这个不是那么迫切的需求,在 AI 时代变成了刚需,近期终于在 TiDB Cloud Serverless 灰度上线。
2025 年 5 月 13 日,TiDB Cloud 版本更新。
TiDB Cloud Serverless 现已为 AI 应用程序提供全文搜索(测试版)。
TiDB Cloud Serverless 现已支持全文搜索(beta 版),使 AI 和检索增强生成 (RAG) 应用程序能够通过精确关键词检索内容。这与基于语义相似度检索内容的向量搜索相辅相成。两种方法的结合显著提升了 RAG 工作流中的检索准确率和答案质量。
主要功能包括:
- 直接文本搜索:直接查询字符串列,无需嵌入。
- 多语言支持:自动检测并分析多种语言的文本,即使在同一表中,也无需指定语言。
- 基于相关性的排序:使用行业标准 BM25 算法对结果进行排序,以实现最佳相关性。
- 原生 SQL 兼容性:无缝使用 SQL 功能(例如筛选、分组和连接)进行全文搜索。
现阶段,全文搜索功能仅在法兰克福(eu-central-1)地区上线。
全文搜索功能演示:
- 登陆 TiDB Cloud,在法兰克福创建一个数据库。
我的环境之前已经创建好数据库,可以直接使用。

- 创建带有全文索引的表。
CREATE TABLE stock_items(
id INT,
title TEXT,
FULLTEXT INDEX (title) WITH PARSER MULTILINGUAL
);

- 给已存在的表添加全文索引。
需要先增加 TiFlash 副本,再创建索引。
CREATE TABLE t_text (id int, ct text);
ALTER TABLE t_text
SET TIFLASH REPLICA 2;
ALTER TABLE t_text
ADD FULLTEXT INDEX (ct)
WITH PARSER MULTILINGUAL;
其中,WITH PARSER <PARSER_NAME> 选项支持两个参数:
STANDARD:快速创建索引,适用于英文内容,用空格和标点符号分割单词。MULTILINGUAL:支持多种语言,包括英语、中文、日语和韩语。
- 导入文本数据。
执行以下 SQL 写入多种语言的数据。
INSERT INTO stock_items VALUES (1, "イヤホン bluetooth ワイヤレスイヤホン ");
INSERT INTO stock_items VALUES (2, "完全ワイヤレスイヤホン/ウルトラノイズキャンセリング 2.0 ");
INSERT INTO stock_items VALUES (3, "ワイヤレス ヘッドホン Bluetooth 5.3 65時間再生 ヘッドホン 40mm HD ");
INSERT INTO stock_items VALUES (4, "楽器用 オンイヤーヘッドホン 密閉型【国内正規品】");
INSERT INTO stock_items VALUES (5, "ワイヤレスイヤホン ハイブリッドANC搭載 40dBまでアクティブノイズキャンセル");
INSERT INTO stock_items VALUES (6, "Lightweight Bluetooth Earbuds with 48 Hours Playtime");
INSERT INTO stock_items VALUES (7, "True Wireless Noise Cancelling Earbuds - Compatible with Apple & Android, Built-in Microphone");
INSERT INTO stock_items VALUES (8, "In-Ear Earbud Headphones with Mic, Black");
INSERT INTO stock_items VALUES (9, "Wired Headphones, HD Bass Driven Audio, Lightweight Aluminum Wired in Ear Earbud Headphones");
INSERT INTO stock_items VALUES (10, "LED Light Bar, Music Sync RGB Light Bar, USB Ambient Lamp");
INSERT INTO stock_items VALUES (11, "无线消噪耳机-黑色 手势触控蓝牙降噪 主动降噪头戴式耳机(智能降噪 长久续航)");
INSERT INTO stock_items VALUES (12, "专业版USB7.1声道游戏耳机电竞耳麦头戴式电脑网课办公麦克风带线控");
INSERT INTO stock_items VALUES (13, "投影仪家用智能投影机便携卧室手机投影");
INSERT INTO stock_items VALUES (14, "无线蓝牙耳机超长续航42小时快速充电 流光金属耳机");
INSERT INTO stock_items VALUES (15, "皎月银 国家补贴 心率血氧监测 蓝牙通话 智能手表 男女表");
- 使用
FTS_MATCH_WORD()函数执行全文搜索,检索最相关的 10 个文档。
SELECT * FROM stock_items
WHERE fts_match_word("蓝牙耳机", title)
ORDER BY fts_match_word("蓝牙耳机", title)
DESC LIMIT 10;

需要注意,ORDER BY 中 FTS_MATCH_WORD() 函数的参数需要与 WHERE 中的保持一致。
查看执行计划,注意到返回结果中包含 textSearch 信息。
"id","estRows","task","access object","operator info"
"TopN_11","10.00","root","","Column#4:desc, offset:0, count:10"
"└─TableReader_27","10.00","root","","MppVersion: 2, data:ExchangeSender_26"
" └─ExchangeSender_26","10.00","mpp[tiflash]","","ExchangeType: PassThrough"
" └─TopN_25","10.00","mpp[tiflash]","","Column#4:desc, offset:0, count:10"
" └─TableFullScan_23","15.00","mpp[tiflash]","table:stock_items","textSearch:(top10 蓝牙耳机 IN test.stock_items.title)->Column#4, columns: [id, title, _FTS_SCORE], keep order:false, stats:pseudo"
- 使用 Python SDK (pytidb) 调用全文搜索。
pytidb 是 TiDB 的官方 Python SDK,旨在帮助开发者高效地构建 AI 应用程序。
🔍 支持多种搜索模式:向量搜索、全文搜索、混合搜索
🔄 自动嵌入生成
🎯 高级过滤功能
💱 支持事务
🔌 支持模型上下文协议 (MCP)
具体演示请参阅官方文档:
https://docs.pingcap.com/tidbcloud/vector-search-full-text-search-python
以及代码示例:
https://github.com/pingcap/pytidb/blob/main/examples/fulltext_search/main.py#L96
TiDB 近期资讯
-
【火热报名中】5 月 29 日,TiDB vs MySQL 线上 Meetup 第四期!呼声超高的 TiDB 性能调优最佳实践来啦,这些“绝招”让你事半功倍!转发海报参与 TiDB Chaos Mesh 马克杯抽奖!https://asktug.com/t/topic/1041530
-
4 月 24 日,TiDB vs MySQL Meetup 第三期!探索 TiDB 数据库助力降本增效新范式!https://asktug.com/t/topic/1041533
-
TiDB & PingCAP 十周年! 💗 在数据库的浩瀚星河中,TiDB 因每一位用户、开发者和社区伙伴的支持而闪耀。小伙伴们的每一条建议和反馈,每一次的社区参与和贡献,都让 TiDB 变得更好。
-
3 月 20 日,TiDB vs MySQL 线上 Meetup 第二期!一起探讨国产化+数智化转型浪潮下,选择什么样的数据库方案赋能企业整体提效?https://asktug.com/t/topic/1039327
-
3 月 1 日,TiDB 社区活动在深圳!一起聊聊大规模 TiDB 国产化替代在金融、跨境电商企业的最新实践!https://asktug.com/t/topic/1039586
-
📖【资料下载】全面了解 TiCDC 新架构带来了哪些优化!https://asktug.com/t/topic/1039612
-
📖【资料下载】TiDB 在银行领域交易明细查询场景实践白皮书 https://asktug.com/t/topic/1039487
-
📖 【PPT 下载】从技术的演进方向看数据库选型趋势!https://asktug.com/t/topic/1039331
Have a nice day ~ ☕
🌻 往期精彩 ▼
- 红帽RHEL 10正式发布
- MySQL 30 周年庆!MySQL 企业版已开放下载!
- 重庆 5.24 从MySQL/RDS/PG到TiDB数据库有哪些收益?
- 杭州 5.24 与金仓数据库大咖面对面
- 上海 5.24 大咖云集、干货拉满,IFClub 这场技术沙龙别错过!
- 华象新闻 | PostgreSQL 18 Beta 1、17.5、16.9、15.13、14.18、13.21 发布
- 错过一个亿,MySQL免费认证页面下架了
- MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
- 卷疯了!众数据库厂商的征文汇
- TiDB社区&墨天轮 | 专栏征文大赛全面开启,期待您分享TiDB业务实战和运维开发那些事儿
- 「合集」三年 50 篇,TiDB 干货全收录
- 「合集」MySQL 8.x 系列文章汇总
- TiDB 新朋友 DBdoctor
- Oracle 数据库全面升级为 23ai
- 广东的崖山,中国的崖山数据库
- TiDB v8 发版!超硬核 v8 引擎!
- 几张图带你了解 TiDB 架构演进
- 一文带你了解 KING BASE 金仓数据库
- 全球 Oracle ACE 社区突破 500 位成员
- 如何选择适合的 MySQL Connector/J 版本
- 即将告别 PG 12,建议升级到 PG 16.3 版本
- G-Star Landscape 2.0 重磅发布,助力开源生态再升级
- 【一文讲透(番外篇)】如何编译安装KWDB v2.0.4数据库
– / END / –
👉 这里可以找到我
👉 这里有得聊
如果对国产基础软件(操作系统、数据库、中间件)感兴趣,可以加群一起聊聊。
关注微信公众号:少安事务所,后台回复[群],即可看到入口。
如果这篇文章为你带来了灵感或启发,请帮忙『三连』吧,感谢!ღ( ´・ᴗ・` )~




