Hexo添加站内搜索


NexT主题支持集成 Swiftype、 微搜索、Local Search 和 Algolia。Swiftype开始收费,而且只对企业邮箱开放注册。本篇将讲述Algolia和Local Search两种方式进行站内搜索。

一、Algolia

Next主题在 5.1.0版本中就已经引入了Algolia,因此省去很多配置。如需按照以下步骤执行,请确保所使用的 NexT 版本在此之后。

注册Algolia,创建Index

前往 Algolia注册页面 注册一个新账户。 可以使用 GitHub 或者 Google 账户直接登录,注册后的 14 天内拥有所有功能(包括收费类别的)免费。之后若未续费会自动降级为免费账户,免费账户 总共有 10,000 条记录,每月有 100,000 的可以操作数。注册完成后,创建一个新的 Index,这个 Index 将在后面使用。

安装 Hexo Algolia

Index 创建完成后,此时这个 Index 里未包含任何数据。 接下来需要安装 Hexo Algolia 扩展, 这个扩展的功能是搜集站点的内容并通过 API 发送给 Algolia。前往站点根目录,执行命令安装:
npm install --save hexo-algolia

获取Algolia中的Key,更新站点配置

在 Algolia服务站点上 点击菜单中的 API Keys ,里面有需要使用的配置key,包括 ApplicationID、Search-Only API Key、 Admin API Key。注意,Admin API Key 需要保密保存。点击ALL API KEYS 找到新建INDEX对应的key, 编辑权限,在弹出框中找到ACL选择勾选Add records, Delete records, List indices, Delete index权限,点击update更新。

更新Index

回到你的博客站点目录,在根目录下执行:

export(windows 为 set) HEXO_ALGOLIA_INDEXING_KEY=Search-Only API key
hexo algolia

来更新 Index。

主题集成

更改主题配置文件,找到 Algolia Search 配置部分:

# Algolia Search
algolia_search:
  enable: false
  hits:
    per_page: 10
  labels:
    input_placeholder: Search for Posts
    hits_empty: "We didn't find any results for the search: ${query}"
    hits_stats: "${hits} results found in ${time} ms"

将 enable 改为 true 即可,根据需要你可以调整 labels 中的文本。

全文搜索

到上一步已经可以进行全局搜索,不过发现不支持全文搜索。查看Algolia控制台,发现只有文章的基本信息,并没有把文章的内容推送到Algolia。

解决方案

找到hexo-algolia插件的配置文件,添加 content 配置。
文件路径 node_modules/hexo-algolia/lib/command.js

var INDEXED_PROPERTIES = [
  'title',
  'date',
  'updated',
  'slug',
  'excerpt',
  'permalink',
  'layout',
  'content'
];

二、Local Search

Local Search,原理是通过hexo-generator-search插件在本地生成一个search.xml文件,搜索的时候从这个文件中根据关键字检索出相应的链接。

安装步骤

安装 hexo-generator-searchdb

在站点的根目录下执行以下命令:
npm install hexo-generator-searchdb --save

站点文件配置

编辑 站点配置文件,新增以下内容到任意位置:
search: path: search.xml field: post format: html limit: 10000

主题文件配置

找到local search配置
# Local search # Dependencies: https://github.com/flashlab/hexo-generator-search local_search: enable: true

最后

以上两种方式都能实现全局搜索,不过相比较与Algolia,使用Local Search更加简便一些。想折腾的同学也可以去尝试下。


文章作者: Niww
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Niww !
 上一篇
Hexo添加在线联系功能 Hexo添加在线联系功能
最近在浏览博客的时候,发现了一个在线联系功能 DaoVoice:当有用户在网页上给你留言后会通过邮件或者微信通知你。于是也想整合一下。最终效果是在右下角生成了一聊天按钮,点击即可进行交流。 安装步骤注册DaoVoice,获取app_id首先
2018-03-02
本篇 
Hexo添加站内搜索 Hexo添加站内搜索
NexT主题支持集成 Swiftype、 微搜索、Local Search 和 Algolia。Swiftype开始收费,而且只对企业邮箱开放注册。本篇将讲述Algolia和Local Search两种方式进行站内搜索。 一、Algolia
2018-03-01
  目录