文章 归档 动态 关于
分类 标签
文章/ 技术/ 搜索

给静态博客加搜索:Pagefind 与 JSON 索引

零后端的两种做法,以及我为什么先选了更笨的那一种。

FIG. 06 / 技术

静态博客加搜索,常见方案有两类:构建时生成倒排索引(Pagefind),或者干脆导出一份 JSON 在前端过滤。

Pagefind 的优点

  • 构建后自动扫描 HTML,生成分片索引。
  • 支持中文分词、权重、摘要高亮。
  • 前端按需加载,文章多了也不会拖慢首屏。
npx pagefind --site dist

JSON 索引的优点

  • 零依赖,索引就是一个 search.json。
  • 可以完全控制字段和排序。
  • 几十篇文章的规模,前端过滤延迟几乎感觉不到。
const index = posts.map((post) => ({
  title: post.data.title,
  description: post.data.description,
  tags: post.data.tags,
  url: `/posts/${post.id}/`
}));

我的选择

这个站目前用 JSON 索引:文章数量不多,搜索框又是按需打开,没必要为它增加一个构建步骤。等文章过百,再换 Pagefind 也不迟。

技术选型不是选「更先进」,而是选「现在最合适的维护成本」。

← 上一篇
读完《暗淡蓝点》:宇宙尺度下的谦卑
下一篇 →
深夜写代码时,我在听什么

评论

待配置
评论区已经预留好了 在 src/consts.ts 里填入 Giscus 的 repo 与 repoId,刷新后就会显示。 仓库需要是公开的,并在 GitHub 上开启 Discussions。
Now playing
The truth that you leave
Pianoboy 高至豪
00:0003:43