graph TD A(添加搜索功能)-->|hugo new search.md|C(search.md) C-->|生成搜索索引|C1(algolia索引目录) C1-->|索引生成插件|C10(安装atomic-algolia) C1-->|索引属性|C11(config.toml) C1-->|索引模板|C12(list.algolia.json) C10-->D(public/生成algolia.json) C11-->|hugo|D C12-->D D-->E(上传搜索索引) C-->|注册algolia|C3{index Name/App Id/Api keys} C3-->|admin key|C31(cofig.toml同目录/新建.env) C31-->|npm run algolia|E C3-->|search keys|C32(编辑search.md) C32-->|安装instantsearch.js|F(建立搜索页面) F-->|add widgets/search keys|G(获取检索结果) E-->G

Error description

我参考这些链接得,algolia的工作原理是将本地生成的数据上传至服务器,根据检索请求,返回搜索结果。其在Hugo上的搭建如上述流程,主要分为两大步。因为这些参考内容十分详实,我着重说明几点。

索引目录

  • 搜索页面和其他分页放在同一目录即可,自行设置。
  • 生成algolia索引目录的插件并没有用hugo-algolia插件。
  • 索引属性和模板可依据Hugo的page变量自行设定,方便后面search.md页面的搜索结果及排序的自定义设置。

搜索页面

  • 上传(可写)与请求(可读)的权限不同,所用key也是不同的。
  • 用instantsearch.js建立search页面较为快捷,需注意版本区别。
  • 搜索页面的显示数目、排序依据可在algolia的dashboard设置。
  • 按理说,本地建立索引的时间格式与所获得检索结果的应是相同的,但是除publishtime(时间格式也不对)外,均显示unix格式的时间。幸好,所有属性均可用hits template自定义。