Blog增加搜索功能 (opens in new tab)
Foreword 博客文章越来越多,靠标签和翻页找东西越来越费劲。站点是 Jekyll 静态部署在 VPS 上的,不想为了搜索再挂一个 Elasticsearch 或者 Meilisearch,所以目标是:构建时生成索引,线上纯静态文件,浏览器里完成检索。 试了一圈以后,最终用的是 Pagefind + 自建的子串索引 双轨方案。这篇文章记录选型过程、当前实现,以及和其他方案的对比,方便以后自己维护或者换方案时有个参照。 Pagefind 构建阶段:jekyll build 产出 HTML 后,执行 npx pagefind,扫描带 data-pagefind-body 的正文区域,按语言规则分词,生成倒排索引(.pf_index、.pf_meta、.pf_fragment 等),和站点一起部署。 使用阶段:页面加载 pagefind.js + WASM,用户输入查询词后同样在客户端分词,在索引里匹配、排序,再拉摘要片段显示。 可以粗浅地理解成:离线建好「词 → 出现在哪些页面」的表,上线后只在浏览器里查这张表。它保证的是正文进了索引、能全站检索,但检索单位是 token(词),...
Read the original article