在Hexo上NexT主题中痛断Algolia决然启用LocalSearch本地搜索

客观来讲,Aloglia是个功能非常不错、服务很完善、后台很强大的搜索服务平台,是一个特别理想的搜索服务,可是她虽阳春白雪,无奈我等身在伟大的墙以内,所以就会遇到很多的问题。

使用Aloglia时不时会报出一些我这等水平的人解决起来嫌麻烦的问题,比如执行hexo algolia时不时就报错,让你重新export HEXO_ALGOLIA_INDEXING_KEY,你当然记不住Key了,要么找你的备份记录要么登录Aloglia去取,处理好后,好不容易稳定了一时,之后又会出现这种问题,比较烦人,这就是耍花枪的代价。

如此,只能另觅他途回归简约,果断的启用由 flashlab 贡献的hexo-generator-searchdb部署Local Search本地搜索,结果很完美:本地化无后端、高效、全文搜索,这意味着什么呢?

  • 你的搜索不再依赖第三方服务的挂与不挂掉。
  • 你可以不用每次更新文章后还要hexo algolia
  • 你只是不能掌握对你Blog进行检索的相关数据而已,这个一点都不重要。

部署和启用Local Search,参考NexT文档一步步来就可以,过程比部署Algolia会简单一些。

  1. 安装 hexo-generator-searchdb,在站点的根目录下执行以下命令:

    1
    $ npm install hexo-generator-searchdb --save

    执行结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ cd taoblog
    $ npm install hexo-generator-searchdb --save
    npm WARN deprecated ejs@1.0.0: Critical security bugs fixed in 2.5.5
    npm WARN babel-eslint@10.0.2 requires a peer of eslint@>= 4.12.1 but none is installed. You must install peer dependencies yourself.

    + hexo-generator-searchdb@1.0.8
    added 3 packages from 3 contributors in 5.674s
    ╭────────────────────────────────────────────────────────────────╮
    │ │
    │ New minor version of npm available! 6.10.3 → 6.11.3 │
    │ Changelog: https://github.com/npm/cli/releases/tag/v6.11.3 │
    │ Run npm install -g npm to update! │
    │ │
    ╰────────────────────────────────────────────────────────────────╯
  2. 编辑 站点配置文件,新增以下内容到任意位置:

    1
    2
    3
    4
    5
    search:
    path: search.xml
    field: post
    format: html
    limit: 10000
  3. 编辑 next主题配置文件,启用本地搜索功能:

    1
    2
    3
    # Local search
    local_search:
    enable: true

    NexT主题配置文件中Local search字段的默认内容如下,将enable改为true

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # Local search
    # Dependencies: https://github.com/flashlab/hexo-generator-search
    local_search:
    enable: false
    # if auto, trigger search by changing input
    # if manual, trigger search by pressing enter key or search button
    trigger: auto
    # show top n results per article, show all results by setting to -1
    top_n_per_article: 1

到此这个工作就顺利完成了!