Hugo搜索工具hugo-algolia2

本站原来使用lunr.js作为搜索引擎,在使用过程中发现一些问题:

  1. 客户端需要下载索引文件
  2. 会出现搜索失效的情况

故本站改为algolia搜索,使用hugo-algolia创建algolia索引文件时发现,hugo-algolia仅针对英文分词,并且会包含一些无用词。hugo-algolia项目master分支超过一年未更新,且issue也较长时间未作出回复,所以本项目hugo-algolia2 clone自hugo-algolia,在其ISC许可下作为单独项目开发。

本项目持续更新中,如有问题欢迎反馈

hugo-algolia2

项目改编自hugo-algolia, 用于hugo静态内容的搜索.

New Features

  • 修复原项目的一些问题
  • 支持自定义URI格式
  • 支持按照文件后缀过滤
  • 去除无用单词
  • 添加中文分词

Installation

npm安装hugo-algolia2

1
npm install hugo-algolia2

或者

1
yarn add hugo-algolia2

How does it work?

默认遍历hugo项目的/content路径下的文件, 并且按照[‘html’,‘md’]后缀过滤, 并且在/public下生成algolia.json. 具体配置参数可以使用hugo-algolia2 --help.

Sending to Algolia

在hugo项目根目录下添加配置文件config.yaml, 如下:

1
2
3
4
5
6
7
8
9
---
baseURL: /
uri: :year:month/:slug

algolia:
  index: "index-name"
  key: "[your API key]"
  appID: "[your app id]"
---

URI是访问路径, 需要和hugo的配置相同. key需要填写Admin API Key.

配置之后,

1
hugo-algolia2 -s

可以上传algolia配置.

Github Action

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
name: deploy
on:
  push:
  workflow_dispatch:

jobs:
  generate-algolia:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: caibingcheng/hugo-algolia2@v1
        with:
          input: "./posts/**"
          output: "./algolia.json"
          index: ${{ secrets.ALGOLIA_INDEX }}
          apikey: ${{ secrets.ALGOLIA_APIKEY }}
          appid: ${{ secrets.ALGOLIA_APPID }}

License

hugo-algolia, 本项目也使用ISC License.