cat ./posts/static-blog-search.md

Pagefind:给静态博客加上全文搜索

#搜索#建站

给静态博客加搜索,最省事的方案就是 Pagefind:构建完成后扫描 dist 目录生成索引,搜索全部在浏览器完成。

原理

Pagefind 在构建后运行,把每个页面切成分片索引,用户搜索时按需加载分片。对一个几百篇文章的博客,索引通常只有几十 KB,非常轻量。

接入步骤

安装为开发依赖:

npm install -D pagefind

构建命令改为先 build 再索引:

npm run build && pagefind --site dist

然后在搜索页加载它提供的 UI,或者像我一样直接调用它的 JS API 自己画界面——这样样式能完全融入站点主题。

中文分词

Pagefind 对 CJK 文本有内建支持,中文文章的搜索开箱即用,这点比很多老牌方案(比如 lunr.js)省心得多。

结果

实际体验:输入即出结果,无网络请求,离线也能搜。唯一要注意的是搜索页需要等索引 JSON 加载完毕,可以给个加载提示。

评论

评论系统(giscus)尚未配置。在 src/consts.ts 中填入GISCUS.repo / repoId / categoryId 即可启用 —— 配置方法见 giscus.app