这篇文章记录 V7 的搜索是怎么搭起来的。结论很短:索引在构建时生成,查询在浏览器里完成,没有服务端,也没有第三方。下面是它的工作方式和几个需要留意的细节。
从构建产物开始
静态页面生成后,Pagefind 读取公开文章的正文,并创建搜索索引。导航、页脚和重复按钮不参与索引。
索引的数据来源就是前面那一个公开文章函数,所以草稿与未来日期的内容不会进入索引——这一点不需要额外维护一份排除名单。
按需读取
读者输入关键词时,浏览器从本站获取相关索引片段。没有独立搜索服务器,也不需要后台数据库。
中文与英文文章可以同时出现在结果中。无结果、网络失败与开发环境尚未生成索引,是不同的状态,界面需要分别解释。
搜索不是唯一入口
分类、标签和时间归档仍然保留。即使没有运行 JavaScript,读者也能逐步找到想读的文章。
对静态站点来说,这一点比搜索速度更重要:站点的每一页都可以被直接链接、被搜索引擎收录、被离线保存,搜索只是在这些路径之上增加一层便利。