全文检索概述
全文检索是一种基于倒排索引的文本检索能力,也常被称为日志检索、关键词检索或倒排索引检索。Datalayers 的全文检索面向 STRING 列中的文本内容提供关键词、短语和布尔表达式检索。相比直接对整列文本做扫描,全文检索更适合日志、事件、审计记录等文本密集型场景,可在海量数据中更快定位目标记录。
如果你需要在日志、消息、审计记录或业务文本中按关键词、短语、布尔逻辑快速查找目标内容,可以先阅读本页,再继续查看 全文检索快速开始。
什么时候适合使用全文检索
- 需要替代低效的
LIKE '%keyword%'扫描 - 需要对日志和事件文本做快速定位、筛选和排序
- 需要对短语、布尔表达式或相关性评分进行查询
- 需要与 SQL 过滤条件联合使用,以缩小检索范围
核心能力
- 支持
MATCH:适合关键词检索和简单多词匹配 - 支持
QUERY:适合短语检索、布尔表达式和更复杂的查询条件 - 支持
SCORE():返回命中结果的相关性评分,用于排序 - 支持在
STRING列上创建INVERTED INDEX以加速全文检索 - 支持通过
tokenizer、filters、with_position配置索引行为
如何选择 MATCH 与 QUERY
- 当你只需要做简单关键词匹配时,优先使用
MATCH - 当你需要短语匹配、布尔逻辑或集合表达式时,使用
QUERY - 当你需要按命中相关性排序时,配合
SCORE()使用
使用约束
MATCH和QUERY只能出现在WHERE子句中- 单条查询中最多只能使用一个全文检索函数:
MATCH或QUERY SCORE()必须与MATCH或QUERY一起使用- 如果索引创建前已经存在历史数据,需要执行
REFRESH INDEX补建索引
典型使用流程
- 在表中准备待检索的
STRING列,例如message - 在该列上创建倒排索引,并按文本语言选择合适的分词器
- 如有历史数据,执行
REFRESH INDEX构建存量索引 - 使用
MATCH或QUERY发起检索,并可通过ORDER BY SCORE() DESC按相关性排序
全文检索与向量检索的关系
全文检索擅长关键词、短语和布尔表达式匹配,适合日志排障、审计检索和明确关键字查询。向量检索擅长语义召回,适合 RAG 和相似内容搜索。两者可以组合使用,在同一系统中兼顾可解释性与语义匹配能力。
应用场景
日志与事件检索
- 按关键词快速定位错误日志、超时日志或特定异常
- 结合短语检索和布尔条件缩小排查范围
审计与问题排查
- 从审计记录、操作说明或事件描述中检索关键文本
- 使用相关性评分优先查看最可能命中的结果
向量混合检索
- 在 RAG 或智能检索场景中,将关键词条件与向量召回结合使用,既保留明确条件过滤能力,也兼顾语义匹配效果
相关文档
- 全文索引函数:全文索引函数
- 创建索引:CREATE 语句(含 CREATE INVERTED INDEX / CREATE VECTOR INDEX)
- 刷新索引:REFRESH 语句详解
- 删除索引:DROP 语句详解
- 快速开始:全文检索快速开始
Datalayers 文档