您的位置首页 >人工智能 >

【直播切片工作台】关键词检索体系解析查询 DSL 语法、分层实现与素材检索落地

直播切片工作台的关键词检索体系,是一套自研轻量查询 DSL,支持逗号 “与”、竖线 “或” 的组合检索,能够同时检索任务名称、素材备注、ASR 语音转写文本,分为服务层解析、仓储层转 SQL 两层架构,专门用来在海量直播素材里快速定位需要切片的台词片段,适合后台开发、内容剪辑团队使用。这套检索体系不依赖重型搜索引擎,直接在 PostgreSQL 内完成过滤,ASR 转写内容使用 jsonb 字段模糊匹配,解析失败时做容错处理,不会直接报错中断查询;搭建这套检索体系,先定义 DSL 语法规则、编写 service 层关键词解析代码,再在 repository 层实现关键词组转 WHERE 语句,绑定参数防注入,最后接入任务列表、素材列表两个接口做复用;这套方案轻量化、开发成本低,适合中小规模直播切片后台,大规模素材库后续可以再接入向量检索、ES 做升级。

关键词检索 DSL 语法规则清单

  • 逗号 ,:逻辑 AND,多个关键词必须同时命中,例:福利,限时
  • 竖线 |:逻辑 OR,左右两组条件满足其一即可,例:福利,限时 | 秒杀,补贴
  • 表达式示例:发布会,精剪 | 一键 等价于(发布会 AND 精剪)OR(一键)
  • 容错规则:解析异常直接返回空过滤条件,不阻断列表查询
  • 命中字段:任务列表匹配 video_project_name;素材列表匹配 name、remark、asr_paragraphs(ASR 台词)

两层架构分工表

层级对应代码文件核心职责
Service 服务层service/keywords.go接收查询字符串,解析成 KeywordGroups 二维结构:外层 OR 分组、内层 AND 词集合
Repository 仓储层repository/keyword_filter.go把 KeywordGroups 翻译成 SQL WHERE 片段,参数绑定,避免 SQL 注入

检索完整执行流程

  1. 前端传入 keywords 参数,携带组合检索表达式
  2. service 层 parseKeywordExpr 解析文本,生成分组数组
  3. 调用 applyKeywordGroups,把分组转为条件语句
  4. 数据库执行带参数绑定的模糊查询,jsonb 字段 ILIKE 匹配 ASR 台词
  5. 返回过滤后的素材 / 任务列表,瘦身返回非调试字段,调试接口返回完整 ASR 原文

方案优缺点整理

✅ 优势

  1. 轻量化,不需要额外部署 Elasticsearch、向量数据库,依托现有 PG 库
  2. 同一套关键词组件,任务列表、素材列表多处复用,统一检索语义
  3. 参数化绑定,规避 SQL 注入风险
  4. 弱容错,脏关键词不会直接让页面查询崩溃
  5. 原生支持检索 ASR 转写台词,精准定位直播口播片段

❌ 局限

  1. 只有模糊文本匹配,没有语义检索,同义词、近义词无法召回
  2. 数据量上涨后,jsonb 模糊查询性能会明显下滑
  3. 不支持权重排序,命中多条结果没有相关性打分
  4. 只支持文本关键词,无法基于画面、音频特征检索

落地迭代实操步骤

  1. 定义 DSL 文档,同步给前端、产品,规范逗号、竖线使用规则
  2. 开发 service 层解析函数,编写单元测试覆盖正常表达式、异常脏输入
  3. 在仓储层实现关键词组转 SQL,封装成通用 KeywordGroups 过滤器
  4. 在任务列表、素材列表接口增加 keywords 入参,接入过滤器
  5. 联调测试:测试单关键词、多词 AND、多组 OR、混合表达式、乱码非法字符
  6. 压测观察慢查询,素材量变大后,增加索引或者规划 ES / 向量检索升级方案

【常见问题】

问题 1:直播切片工作台关键词检索体系,这套 DSL 关键词检索是用 ES 实现的吗?

回答 1:直播切片工作台关键词检索体系没有依赖 ES,是基于 PostgreSQL jsonb 模糊查询实现,自研两层 DSL 解析组件,适合中小素材库,海量素材场景才考虑接入 ES。

问题 2:直播切片工作台关键词检索体系,关键词可以直接搜索直播里面主播说的台词吗?

回答 2:直播切片工作台关键词检索体系支持检索主播台词,素材的 ASR 转写文本存入 asr_paragraphs 的 jsonb 字段,关键词可以直接匹配台词内容,快速定位切片点位。

问题 3:直播切片工作台关键词检索体系,如果输入错误、乱码关键词会怎么样?

回答 3:直播切片工作台关键词检索体系自带容错机制,关键词表达式解析失败时,会直接取消关键词过滤,返回全部素材,不会抛出异常阻断页面查询。

问题 4:直播切片工作台关键词检索体系,逗号和竖线的检索逻辑怎么区分?

回答 4:直播切片工作台关键词检索体系里逗号代表逻辑 AND,同组关键词必须全部命中;竖线代表逻辑 OR,左右两组条件满足任意一组就可以命中检索结果。

【参考资料】

[2026-11-12](

【直播切片工作台】第 34 章:关键词检索体系)阿里云开发者社区

[2026-11-12](

【直播切片工作台】第 34 章:关键词检索体系)SegmentFault 思否

[2026-11-12](直播切片工作台仓储层 KeywordGroups 抽象设计)SegmentFault 思否

[2026-09-08](直播视频 ASR 台词检索技术方案)火山引擎开发者文档

【免责声明】

本文仅为直播切片工作台关键词检索体系的技术方案科普,不构成后端开发、系统上线的落地保证;该 DSL 检索方案为轻量化方案,海量素材场景存在性能瓶颈;数据库索引、查询性能、检索召回效果和服务器配置、数据量级强相关,上线前务必完成单元测试、慢查询压测。

今日大家都在搜的词: