作者介绍:孙晓光,知乎技术平台负责人,与薛宁(@Inke)、黄梦龙(@PingCAP)、冯博(@知乎)组队参加了 TiDB Hackathon 2019,他们的项目 TiSearch 获得了 CTO 特别奖。
“搜索”是大家在使用各种 APP 中非常重要的一个行为,对于知乎这样以海量优质内容为特色的产品来说,借助搜索帮助用户准确、快速地触达想要寻找的内容更是至关重要。而“全文检索”则是隐藏在简单的搜索框背后不可或缺的一项基本能力。
当前我们正逐步将越来越多的业务数据向 TiDB 迁移,目前在 TiDB 上我们只能使用 SQL Like 对内容进行简单的检索。但即便不考虑性能问题,SQL Like 仍然无法实现一些在搜索场景下常见的信息检索需求,例如下图所示的几种场景,单纯使用 Like 会导致查询到有歧义的结果或满足搜索条件的结果无法返回。
![](https://img-blog.csdnimg.cn/img_convert/3f1c59b9123cfd7b5d2e3c28831b146d.jpeg)
当前 TiDB 全文检索能力的缺失,使得我们依旧需要使用传统的方式将数据同步到搜索引擎,在过程中需要根据业务特点做大量繁琐的数据流水线工作维护业务数据的全文索引。
为了减少这样的重复劳动,在今年 TiDB Hackathon 中我们尝试为 TiDB 引入“全文检索”功能,为存储在 TiDB 中的文本数据提供随时随地搜索的能力。以下是最终的效果展示: