Hexo 添加搜索

在使用 Hexo 博客时,如果文章较多,就会发现分类和标签已经很难快速找到所需要的文章内容了。这时候就需要为 Hexo 博客系统添加本站的搜索功能。

安装插件

Hexo 的搜索功能依赖于 hexo-generator-search 插件,在博客根目录执行下面命令进行安装。

npm install hexo-generator-searchdb --save

修改配置

修改站点配置文件

修改根目录下的 _config.yml 配置文件,添加如下内容。

# hexo-generator-searchdb
search:
  path: search.xml
  field: post
  format: html
  limit: 10000
  content: true

参数说明:

  • path —— 文件路径。默认为 search.xml,如果将扩展名改为 .json,则输出格式为 JSON,否则使用 XML 格式。
  • field —— 指定搜索范围。可选:
    • post(默认):只覆盖博客中已发布的所有文章;
    • page:只覆盖博客中所有页面;
    • all:覆盖博客中所有页面和已发布的文章。
  • content —— 是否包含每一篇文章的内容。若为 false 则只会根据文章标题和 meta 元数据进行搜索,默认为 true
  • format —— 页面内容的形式。可选:
    • html(默认):原始 html 字符串被缩小。
    • striptags:原始 html 字符串被缩小,并删除所有标签。
    • raw:每个帖子或页面的 Markdown 文本。

修改主题配置文件

另外,还需要修改对应主题的 _config.yml 配置文件。

以 Next 主题为例,打开 ./themes/next/_config.yml 文件,开启 local_search 配置。

local_search:
    enable: true

问题

上传 GitHub Pages 后无法使用搜索功能

表现:Local Search 一直在转圈圈

这种情况有可能是 XML 解析不正确,比如字符有问题。一种简单的解决方法是使用 json 替代 xml 格式。修改 _config.yaml 文件 search 部分,重新编译即可。

# hexo-generator-searchdb
search:
  path: search.json
  field: post
  format: html
  limit: 10000
  content: true

Leave a Reply