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更加简便一些。想折腾的同学也可以去尝试下。