Skip to content

全文检索概述

全文检索是一种基于倒排索引的文本检索能力,也常被称为日志检索、关键词检索或倒排索引检索。Datalayers 的全文检索面向 STRING 列中的文本内容提供关键词、短语和布尔表达式检索。相比直接对整列文本做扫描,全文检索更适合日志、事件、审计记录等文本密集型场景,可在海量数据中更快定位目标记录。

如果你需要在日志、消息、审计记录或业务文本中按关键词、短语、布尔逻辑快速查找目标内容,可以先阅读本页,再继续查看 全文检索快速开始

什么时候适合使用全文检索

  • 需要替代低效的 LIKE '%keyword%' 扫描
  • 需要对日志和事件文本做快速定位、筛选和排序
  • 需要对短语、布尔表达式或相关性评分进行查询
  • 需要与 SQL 过滤条件联合使用,以缩小检索范围

核心能力

  • 支持 MATCH:适合关键词检索和简单多词匹配
  • 支持 QUERY:适合短语检索、布尔表达式和更复杂的查询条件
  • 支持 SCORE():返回命中结果的相关性评分,用于排序
  • 支持在 STRING 列上创建 INVERTED INDEX 以加速全文检索
  • 支持通过 tokenizerfilterswith_position 配置索引行为

如何选择 MATCH 与 QUERY

  • 当你只需要做简单关键词匹配时,优先使用 MATCH
  • 当你需要短语匹配、布尔逻辑或集合表达式时,使用 QUERY
  • 当你需要按命中相关性排序时,配合 SCORE() 使用

使用约束

  • MATCHQUERY 只能出现在 WHERE 子句中
  • 单条查询中最多只能使用一个全文检索函数:MATCHQUERY
  • SCORE() 必须与 MATCHQUERY 一起使用
  • 如果索引创建前已经存在历史数据,需要执行 REFRESH INDEX 补建索引

典型使用流程

  1. 在表中准备待检索的 STRING 列,例如 message
  2. 在该列上创建倒排索引,并按文本语言选择合适的分词器
  3. 如有历史数据,执行 REFRESH INDEX 构建存量索引
  4. 使用 MATCHQUERY 发起检索,并可通过 ORDER BY SCORE() DESC 按相关性排序

全文检索与向量检索的关系

全文检索擅长关键词、短语和布尔表达式匹配,适合日志排障、审计检索和明确关键字查询。向量检索擅长语义召回,适合 RAG 和相似内容搜索。两者可以组合使用,在同一系统中兼顾可解释性与语义匹配能力。

应用场景

日志与事件检索

  • 按关键词快速定位错误日志、超时日志或特定异常
  • 结合短语检索和布尔条件缩小排查范围

审计与问题排查

  • 从审计记录、操作说明或事件描述中检索关键文本
  • 使用相关性评分优先查看最可能命中的结果

向量混合检索

  • 在 RAG 或智能检索场景中,将关键词条件与向量召回结合使用,既保留明确条件过滤能力,也兼顾语义匹配效果

相关文档