部署 Lyra 搜索
边缘嵌入式全文搜索引擎,Lyra 索引随应用或作为服务部署。
平台进阶
为什么
Lyra 是 2KB 全文搜索引擎,在浏览器、边缘 Workers 或 Node 运行,无需外部服务。开箱即用支持 BM25 排序、容错和多语言词干。
平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
静态站、边缘应用和离线优先 PWA 的搜索用 Lyra。数据集 >10 万文档时避免 — 用 Meilisearch/Typesense。
如何做
1. 安装 — npm i @lyrasearch/lyra
2. 创建索引 — const db = lyra({ schema: { title: "string" } })
3. 插入 — lyra.insert(db, { title: "Hello" })
4. 搜索 — lyra.search(db, { term: "hello" })
5. 持久化 — lyra.save(db) 为 JSON,lyra.load 加载
6. 部署 — 索引随应用包发布,无需服务器
示例
import { create, insert, search } from "@lyrasearch/lyra";
const db = create({ schema: { title: "string", author: "string" } });
insert(db, { title: "The Great Gatsby", author: "Fitzgerald" });
const result = search(db, { term: "gatsby" });
console.log(result.hits); // [{ title: "The Great Gatsby", ... }]
// 边缘部署 — Worker 中索引
export default { async fetch() {
return Response.json(search(db, { term: "query" }));
}};
常见问题
- ⚠索引过大不适合边缘 — 10 万+ 文档超 Worker 内存,预过滤或分片
- ⚠大索引搜索慢 — 无配置调优,减少 schema 字段
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓构建时预建索引发布为 JSON — 运行时 lyra.load 加载
- ✓用 Lyra 的词干和停用词适配你的语言 — 提升相关性
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求