ApolloDatabase 是一个全文搜索平台,专为百度 Apollo 自动驾驶文档设计。完全部署在 Cloudflare Pages 边缘网络,无需后端服务器。
搜索引擎使用 Orama 在浏览器端运行,搜索索引随静态站一起部署,首次加载约 800KB (gzip)。
┌─────────────────────────────────────────────┐
│ Cloudflare Pages (全球边缘) │
│ │
│ 静态 HTML/JS (Next.js export) │
│ + /search-index/articles.json (~800KB gz) │
│ │
│ 浏览器加载索引 → Orama 本地全文搜索 │
└─────────────────────────────────────────────┘
爬虫 (离线) → Meilisearch dump → build-index → 静态索引
- 零后端成本:纯静态站,CF Pages 免费版完全够用
- 边缘加速:全球 CDN 分发,搜索响应 < 10ms (本地计算)
- 隐私友好:搜索请求不离开用户浏览器
# 安装依赖
yarn install
# 构建搜索索引 + 静态站
yarn build
# 本地预览
npx serve outnpx wrangler pages deploy out --project-name=apollo-database- Fork 本仓库
- 在 Cloudflare Dashboard → Pages → Create project → Connect to Git
- 设置:
- Build command:
yarn build - Build output directory:
out - Node.js version: 20+
- Build command:
爬虫仍然需要本地运行(依赖 Puppeteer/Meilisearch),但不影响线上部署:
# 爬取新文章 (需要本地 Meilisearch 运行)
yarn spider:new
# 导出新的 dump → 放到 data/ → 重新构建
yarn build:index更新索引后重新部署即可。
ApolloDatabase/
├── src/
│ ├── app/ # Next.js 页面 (静态导出)
│ ├── components/ # React 组件
│ ├── lib/
│ │ ├── search.ts # Orama 客户端搜索
│ │ └── types.ts # 类型定义
│ └── spider/ # 爬虫 (离线使用)
├── scripts/
│ └── build-index.ts # 从 Meilisearch dump 构建 Orama 索引
├── data/
│ └── *.dump # Meilisearch 数据导出
├── public/
│ └── search-index/ # 构建生成的搜索索引 (gitignore)
├── out/ # 静态站输出 (gitignore)
├── wrangler.json # CF Pages 配置
└── package.json
MIT
Steven Moder - java20131114@gmail.com