博客搭建之路:hexo增加搜索功能

hexo增加搜索功能

hexo版本5.0.2 npm版本6.14.7 next版本7.8.0

作为一个博客,没有搜索功能,如何在大批文章中找到自己想要的,那在hexo中如何增加搜索功能呢?

yml 复制代码
search:
  path: search.json
  field: post

在博客目录下安装npm install hexo-generator-search --save,此时使用hexo cl && hexo g就会在博客public目录下生成一个search.json,在使用hexo d部署上去搜索就可以用了

本地搜索弊端

前期还好,后来随着我的文章越来越多,search.json文件已经达到了十几M,每次加载页面都需要花费几分钟来加载search.json文件,使用体验很不好

algolia搜索

本地搜索走不通,那就只能使用远程搜索了,还好hexo提供了algolia搜索

先去官网登录一下,这里我使用的是Github登录,然后新建一个Index

创建Index后,右上角头像处点击选择Settings

查看ApiKeys

_config.yml中配置algolia

yml 复制代码
algolia:
  applicationID: #对应Application ID
  apiKey: # 对应Search-Only API Key
  adminApiKey: # Admin API Key
  indexName: # 创建的那个索引名称

还需要在环境变量中配置HEXO_ALGOLIA_INDEXING_KEY 值为 页面中Admin API Key的值

在博客目录下安装npm install hexo-algolia --save

之后修改使用的主题下(我使用的是next主题)的_config.yml,配置使用algolia搜索

yml 复制代码
algolia_search:
  enable: true # 开始algolia搜索
  hits:
    per_page: 10
  labels:
    input_placeholder: 查询
    hits_empty: "没有找到任何相关结果: ${query}"
    hits_stats: " ${time} ms内找到 ${hits} 条结果"

# Local Search
# Dependencies: https://github.com/theme-next/hexo-generator-searchdb
local_search:
  enable: false #关闭本地搜索

此时执行hexo algolia就会将博客生成的search发送到algolia中,而部署的博客就可以搜索到所上传的内容

这里有一个小问题,在执行hexo algolia时,algolia会多条合并进行提交,而免费的algolia会有大小的限制,可以看到超过10000字节就不行了,algolia默认会50条合并提交,可以设置几条进行合并

使用chunkSize来设置条数,如hexo algolia --chunkSize 10 就是10条合并

每次都指定参数还是挺麻烦的,看一下algolia中是怎么写的吧。

发现在node_modules/hexo-algolia/lib/command.js中有一个默认配置

yaml 复制代码
var CONSOLE_DEFAULTS = {
  dryRun: false,
  flush: false,
  chunkSize: 50,
  layouts: INDEXED_LAYOUTS
};

设置的chunkSize是50,我由于正文内容比较多,改成了3,这样就不需要每次都带参数了

参考文献

相关推荐
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭10 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
少年姜太公15 小时前
从零开始详解js中的this(下)
前端·javascript·程序员
凌虚15 小时前
Kubernetes APF(API 优先级和公平调度)简介
后端·程序员·kubernetes
小华同学ai20 小时前
ShowDoc:Star12.3k,福利项目,个人小团队的在线文档“简单、易用、轻量化”还专门针对API文档、技术文档做了优化
前端·程序员·github
小青鱼3 天前
AI编程-Cursor从入门到精通系列之常用概念及解释(二)
人工智能·程序员
捡田螺的小男孩4 天前
参数校验的十个建议!收藏好,别再给测试机会提bug~
java·后端·程序员
哔哩哔哩技术4 天前
B站装机系统实践:从初创到规模化的演进
前端·程序员
程序员鱼皮4 天前
没事别想不开去创业!
计算机·面试·程序员·项目
绝无仅有4 天前
通用的权限管理系统的介绍与总结
面试·程序员·架构
李新_5 天前
工程师如何布置工作?
面试·程序员·团队管理