双引擎检索体系与搜索语法规范
在去中心化与端对端加密(E2EE)体系中,搜索面临巨大的技术挑战:服务端仅掌握加密后的密文与元数据,无法直接在后端数据库进行明文 SQL 模糊匹配。EpoCanvas 创新打造了独特的双引擎协同检索架构:既支持在客户端本地构建零知识全文本地索引,又支持基于 CSS Custom Highlight API 的页面无损视觉高亮与指令化快速跳转。
🏗️ 双引擎架构概览
用户在搜索框输入指令 │ ┌───────────────────────┴───────────────────────┐ ▼ ▼[引擎 1: 设定与页面高亮引擎] [引擎 2: 零知识协同检索引擎] - 纯客户端 TreeWalker 遍历 - 本地 IndexedDB 预解密文本库 - CSS Custom Highlight API - 结构化指令编译器 (AST 解析) - 0 网络请求 · 0 延时 - 跨空间/跨频道漫游 (global:) - 键盘快捷键高光游走 (n / N) - 密文元数据与服务端对齐⚙️ 1. 设定页与页面原生视觉高亮引擎 (Settings Engine)
当用户处于各类配置面板(如常规设置、安全中心、系统集成、规则引擎等)时,搜索行为聚焦于设置项的秒级定位。
纯前端无损视觉高亮
- 实现原理:利用现代浏览器原生
CSS Custom Highlight API(配合 DOMTreeWalker深度遍历可视文本节点),直接在 DOM 树中建立选区并施加高亮着色,绝不破坏现有 HTML 结构,杜绝传统innerHTML.replace引发的组件重新挂载与事件监听失效。 - 性能优势:0 次网络请求、0 毫秒 API 延时,万字长文本耗时低于 3ms。
- 平滑聚焦定位:匹配命中的目标项自动执行平滑居中滚动:
element.scrollIntoView({ behavior: 'smooth', block: 'center' });
全域设定快速跳转 (all: / global:)
在设置搜索框中输入 all:2FA 或 global:AI 时,弹出全局设置索引下拉层,横跨常规设置、安全中心、存储集成与多模型池所有模块,点击结果瞬间完成路由跳转与选项高亮展开。
🔍 2. 协同会话与画板结构化搜索语法 (Unified Syntax)
在主协作界面中,搜索框接收 UNIX 风格的结构化键值指令。多个指令以空格分隔,默认遵循 AND 交集逻辑。
A. 空间与频道范围限定 (Scope & Target)
| 指令格式 | 说明与行为准则 | 适用示例 |
|---|---|---|
in:#channel | 限定检索范围仅在指定的频道名称或 ID 内。 | in:#architecture 架构演进 |
space:name | 限定在特定工作空间(Space)下的所有子频道内。 | space:core 联邦规范 |
global: | 跨越当前选定空间,扩大至所有已加入空间与频道进行全域漫游。 | global:双棘轮密钥 |
is:dm | 仅检索与特定成员的一对一单聊私密会话 (Direct Messages)。 | is:dm @bob:epocanvas.com |
B. 参与者与身份限定 (Author & Mentions)
| 指令格式 | 说明与行为准则 | 适用示例 |
|---|---|---|
from:@user | 检索特定发件人或协作者发布的事件。 | from:@alice:example.com |
from:me | 检索当前登录账号本人发布的消息、评论或白板元素。 | from:me has:file |
mentions:me | 检索直接 @提及 当前登录账号的通知与事件。 | mentions:me is:unread |
C. 多媒体与内容类型过滤 (Content Types)
| 指令格式 | 说明与行为准则 | 适用场景 |
|---|---|---|
has:file | 检索包含可下载文件附件的消息。 | 查找周报归档压缩包 |
has:image | 检索包含图片素材或嵌入图床资源的消息。 | 检索设计草图与架构图 |
has:code | 检索包含 Markdown 代码块(如 ```ts)的讨论。 | 追溯历史实现代码片段 |
has:canvas | 检索挂载了实时矢量画板协同图元的会话。 | 查找产品交互头脑风暴画板 |
D. 时间范围限定 (Temporal Filters)
支持 ISO 8601 标准日期格式(YYYY-MM-DD):
after:2026-01-01:检索指定日期之后的事件。before:2026-09-01:检索指定日期之前的历史记录。- 组合示例:
after:2026-08-01 before:2026-08-31 has:file,精确检索 8 月份发生的所有文件传输。
E. 标签与规则标记 (Labels & Tags)
tag:urgent:检索由流式规则引擎或人工标记了urgent标签的事件。is:starred:检索已被标星收藏的关键讨论或画板。is:pinned:检索各频道中固定的置顶公告与重要里程碑。
🔐 3. 零知识本地检索原理 (Zero-Knowledge Indexing)
为了在保护绝对隐私的同时实现毫秒级快速检索,EpoCanvas 采用了端侧离线解密索引架构:
服务端推送加密事件流 ──▶ 客户端 Web Worker 异步解密 │ ▼ 写入本地 IndexedDB 检索缓存库 (向量化分词 + 倒排索引分词表) │ ▼ 用户键入搜索词 ──▶ 本地秒级召回结果并标红高亮- 异步 Web Worker 分词:客户端在收到加密推送并在后台完成 Double Ratchet 解密后,通过 Dedicated Web Worker 对纯文本执行本地分词(中英文分词算法支持),构建轻量级倒排索引,不占用主 UI 渲染线程。
- 密钥与索引永不上云:所有明文词条仅存于客户端 IndexedDB 局部沙箱,服务端只能检索到事件哈希、发送时间戳与房间 ID 等匿名元数据,杜绝数据在传输或存储节点发生明文泄露。
⌨️ 4. 键盘高光导航与快速联动
在工作台任意界面按下快捷键,即可流畅操作检索组件:
| 快捷键 | 动作行为 |
|---|---|
Cmd + K / Ctrl + K | 呼出全局搜索浮层,光标自动聚焦输入框 |
Enter | 确认检索,视图平滑跳转至第一个匹配结果 |
n | 在页面内部跳转至下一个高亮匹配项 |
N (Shift + n) | 在页面内部跳转至上一个高亮匹配项 |
Esc | 清除高亮标记并关闭检索下拉层 |