跳转至

SAP 垂直在线搜索框架

2026-07-22 | 来源:Kabin Su 与 AI 联合设计

整体定位

面向 SAP 开发/实施/Basis 人员的领域专用混合检索框架,融合「内网私有知识库 + 外网多站点并行检索」,内置 SAP 领域分词、来源权重打分、场景化检索路由,适配 Hermes 服务架构。

架构分层(自上而下)

前端交互层
API 接入网关(Hermes Search Service)
1. 查询预处理模块(分词、识别、路由、扩词)
2. 多路并行召回模块(内网库 + 外网搜索引擎通道)
3. 结果统一聚合、去重、打分重排模块
4. 过滤、标签、摘要渲染模块
前端结构化结果返回
↑↓
全局缓存层(Redis)+ 持久化存储(MySQL/ES)

各层详细设计

1. API 接入网关层

统一入参:

{
  "query": "CDS视图关联两张表 S/4HANA",
  "version": "S4HANA2024",
  "module": "ABAP",
  "scene": "default/note/table/local",
  "page": 1,
  "size": 20,
  "onlyInternal": false
}

能力:权限校验、限流、全链路日志。

2. 查询预处理核心模块

SAP 领域实体识别(模式匹配,无需维护词典)

实体识别已从词典维护切换为正则模式自动匹配,不再需要人工添加新词:

实体类型 匹配方式 示例
版本 正则:S4HANA\d* / ECC\d* / BTP S/4HANA2026 自动识别
模块 白名单(稳定,不变) MM/SD/FICO/ABAP/Basis
事务码 正则 [a-z]{2}\d{2} + 前缀白名单 + 全字母特例 ME23N、VA01、MIGO、FBL1N
技术对象 正则:CDS/AMDP/RFC/BAPI/BAdI 等 CDS、BAPI、User-Exit
表名 常见表名字典(MARA/EKKO/VBAK 等) MARA、EKKO
报错 正则:ST22 / CX_* 异常类 ST22、CX_STATIC_CHECK

新版本 SAP、新事务码、新概念——符合命名模式的自动识别,无需手动添加。仅模块和表名用白名单(稳定且数量有限)。

语种判定

  • 含 CDS/OData/CAP/SE 事务码/英文报错 → en_priority
  • 含金税、开票、本土化、凭证 → cn_only

场景路由

识别条件 优先召回站点
scene=note / 消息号/Dump support.sap.com
scene=table / 表名 Tcode saptables.org + help.sap.com
scene=local / 本土化关键词 itpub、91sap、CSDN
识别 CAP/BTP/Fiori developers.sap.com
默认通用 L1 官方全量 + 社区补充

site 检索语句自动拼接

主查询1(官方):{query} site:help.sap.com OR site:support.sap.com OR site:developers.sap.com
主查询2(社区):{query} site:community.sap.com
中文通道:{query} site:itpub.net OR site:91sap.com OR site:csdn.net

同义词扩写

S4 = S/4HANA、ABAP Cloud = 云ABAP、CDS view = CDS 视图

3. 多路并行召回层

双来源并发,互不阻塞,外网超时熔断:

通道 目标 超时 权重
A:内网 ES 公司内部实施文档/需求/方案 120
B1:L1 官方 help/support/developers 1.5s 100-95
B2:社区速查 community.sap.com + saptables.org 2s 80-65
B3:中文论坛 itpub/91sap/CSDN/博客园 3s 55-40

4. 聚合去重 & 重排打分

去重规则

  1. 相同 URL 去重,保留权重高的
  2. 摘要重合度 >80% 判定搬运,删除低权重来源
  3. 内网文档全部保留

综合打分公式

total_score = source_base_weight + entity_match_score + version_match_bonus - age_penalty - low_quality_penalty

内网文档搜索采用双通道并查

通道 方式 得分
rg 关键词 实体匹配命中 + 文件实体计数分级 95~125
向量语义 智谱 embedding-3 2048维,余弦相似度转分 80~135

两路去重合并,统一打分排序。文档入库时自动算好向量,新增文档索引缺失时实时计算。互不替代——关键词保证精确,向量补足语义。

权重表

数据源 基础分 标签
内网私有文档 120 ✅ 内部文档·最高可信
help.sap.com 100 ✅ SAP 官方标准文档
support.sap.com Notes 98 ✅ SAP 官方 Note/故障修复
developers.sap.com 95 ✅ SAP 开发官方
community.sap.com 80 ⚠️ SAP 官方社区
saptables.org 65 ⚠️ 表/事务码速查
itpub/91sap 55 ⚠️ 国内实施论坛
CSDN/博客园 40 ⚠️ 个人技术博客
文库类低质 10 ❌ 兜底低参考

加分/扣分

  • 标题命中表名/事务码/CDS:+20
  • 正文含报错消息号:+10
  • 版本与用户输入一致:+15
  • 查 S4 但文档仅 ECC:-30
  • 文档 >10年:-25
  • 文库/付费/广告:-40

分层排序

  1. 置顶区:内网文档 + L1 官方(≥90)
  2. 推荐区:社区、专业速查(50-89)
  3. 折叠兜底区:低分博客、文库(<50),默认收起

5. 结果渲染与过滤

统一输出字段:

{
  "title": "",
  "url": "",
  "summary": "关键词高亮摘要",
  "source_type": "internal/official/note/community/cn_forum",
  "score": 96,
  "tags": ["S/4HANA","CDS","权威推荐"],
  "publish_year": 2022,
  "trust_tips": "可用于生产配置参考"
}

可信度提示:≥90 ✅ / 50-89 ⚠️ / <50 ❗

前端快捷筛选:来源 / 版本 / 模块。

6. 缓存 & 持久化

  • Redis:key {query}_{version}_{scene},内网 24h / SAP 官方 7d / 国内博客 3d
  • MySQL:搜索日志、高频 query、点击埋点 → 迭代权重

落地实现

对应的 Hermes 落地脚本:/opt/data/scripts/sap_search.py(v1,Python)

已实现: - ✅ SAP 实体识别(正则模式匹配,无需维护词典) - ✅ 多通道 Firecrawl 并行搜索(官方/社区/速查/中文论坛) - ✅ 内网 _wiki 知识库检索(含真实标题提取 + 实体命中分级评分) - ✅ 向量语义搜索(双通道:rg 关键词 + 向量语义,合并去重统一打分) - ✅ 来源权重打分 + 实体加分 + 时效扣分 - ✅ 内网文档分级评分(标题命中 > 120 / 多实体命中 > 115 / 通用词降级 95) - ✅ 三层结果展示(置顶/推荐/折叠) - ✅ Redis 缓存层(容器 redis:7-alpine,128MB LRU,TTL 3~7天) - ✅ Hermes skill search/sap-search - ✅ 场景路由中文支持(报错/错误/故障→note 通道,表/字段→table 通道) - ✅ 中文混排兼容(事务码和技术对象在中文前后无需空格也能识别)

未实现(规划): - ⏳ 外网搜索超时熔断差异化(目前统一 8s) - ⏳ 版本匹配加分(查 S4 命中 ECC 文档 -30 分) - ⏳ 同义词扩写(S4↔S/4HANA 等) - ⏳ 点击埋点 + 权重自动迭代 - ⏳ 前端展示 UI(Hermes Web Dashboard) - ⏳ 向量检索增强

关联