前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >结合 Github Action 实现自动上传 Algolia 索引

结合 Github Action 实现自动上传 Algolia 索引

作者头像
凡梦星尘
发布于 2024-11-20 09:31:52
发布于 2024-11-20 09:31:52
840
举报
文章被收录于专栏:Hugo博客Hugo博客

起初本站的文章搜索功能使用是本地搜索支持,但后来发现有众多网友(包括 Hugo 官网文档搜索)都使用的是 Algolia 在线搜索引擎,便顺手也给自己的站点移植到该搜索引擎上面。既然提到搜索引擎自然是少了索引文件的维护,接下来就给大家分享下结合 Github Action 实现自动化的流程。

索引内容

Algolia 采用较为松散的 JSON 数据结构支持,所以实现起来也相对比较轻松一些,也可以根据自己的需求进行个性化的设计。在此就博文查找而言,暂没有做复杂的设计,只是利列举了必要的字段信息,基于 Hugo 引擎的代码参考如下:

1 2 3 4 5 6 7 8 9 10 11 12 13

[ {{- range $index, $entry := where .Site.RegularPages "Kind" "page" }} {{- if $index }}, {{ end }} { "objectID": "{{ .Date.Unix }}", "permalink": "{{ .Permalink | relURL }}", "title": {{ .Title }}, "content": {{ .Plain | safeJS }}, "date": {{ .Date.Format }}, "updated": {{ .Lastmod.Format }} } {{- end }} ]

注意: 切记一定要给每个索引增加 objectID 参数,以确保索引的唯一性,而且后续的索引维护也是根据这个参数作为主键进行更新等相应的操作。

这里只是把博文显示的页面进行索引化,并没有对分类、标签、列表等做索引支持,查询的内容只针对文章页面本身就足够用啦。

生成索引

Hugo 支持自定义文件的内容的输出,只需要几步简单的参数定义,比如在 config.yaml 配置文件中加入如下的设置:

1 2 3 4 5 6 7 8 9 10 11

outputFormats: # 生成 Algolia 索引文件 AlgoliaIndexes: mediaType: application/json baseName: algolia isPlainText: true notAlternative: true # 输出 Algolia 索引文件 outputs: home: ["HTML", "AlgoliaIndexes"]

默认会在 public 目录中输出一个名称为 algolia.json 的索引文件。

自动维护

接下来就是要将上面生成的索引文件上传到 Algolia 服务器,在没有实现自动化支持前,每次都要手动的进行上传很是麻烦。由于站点的代码是托管在 Github 上面,于是便想到了使用 Action 来集成。

发现 Algolia 官方也提供了个 setup-algolia-cli 项目支持,不过很遗憾在使用过程中,发现导入有问题无法解决只好放弃。

1 2 3 4

algolia version 1.2.0 algolia objects import $ALGOLIA_INDEXNAME -F $ALGOLIA_INDEXFILE bufio.Scanner: token too long Error: Process completed with exit code 1.

然后就发现 Github 市场中提供 Algolia 上传的 Action 有不少,无奈只能挑几个试试看。经过一番亲自测试下来,觉得 algolia-uploader Algolia-Upload-Records 两款比较好用一些,最终选择了后者集成到本站的 Github Action 步骤中,无他主要是觉得上传后有索引ID输出响应,体验相对会好些而已,Action 脚本代码配置参考如下:

1 2 3 4 5 6 7

- name: Upload Algolia Indexes uses: iChochy/Algolia-Upload-Records@main env: APPLICATION_ID: ${{ secrets.ALGOLIA_APPID }} ADMIN_API_KEY: ${{ secrets.ALGOLIA_ADMINKEY }} INDEX_NAME: ${{ secrets.ALGOLIA_INDEXNAME }} FILE_PATH: "public/algolia.json"

小结

整个过程中也可谓几番波折,原以为官方的文档和资源都是好用的,结果却是出乎意料只好改用第三方的支持。还有一个百思不得其解的问题,就是同样没有 objectID 参数的索引文件,通过官方网站手动上传不会产生重复的索引,而通过 API 形式上传到服务器会不断产生重复的索引。以及说 Github 市场中琳琅满目的第三方插件,有时也是让人难以抉择,只好一步步慢慢尝试,好在最终结果还是喜人的,问题得到了解决。

参考:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
hugo loveit构建github page博客
我在非常久之前就开始写博客了,最早的时候是在QQ空间上。我印象中我应该是2004年开始上小学,所以是三年级开始进行连载。一直以来我觉得我都不是很愿意用语言和别人表达自己的观点,因此在很长一段时间内我都是通过博客来记录自己的想法。由于我记忆力也不是很好,博客对于我来说更像是外接硬盘,而不是而别人交流的手段。通过阅读之前写的博客,我能够很快了解到自己之前的想法。这个习惯也延续到了今天。
千灵域
2022/06/17
1K0
hugo loveit构建github page博客
Hugo NexT主题升级记录
时隔 2 年的时间后,如今又再一次开始折腾自己的博客站点,看来是自己有点太躁动啦😂。在上海疫情期间也真有点压抑的,为了消除这份不安的情绪,决定参考 Hexo NexT 从零开始全面重构 NexT 主题,也在独自奋斗的2个多月断断续续时间里完成主体功能所有移植工作(其实一直想有人参与进来共建,直接跑到人家 Hexo NexT 用户群“呼喊”,但也是没有浪花泛起,只好是自己继续独立前行)。 这不乘着周末的时间,把自己的站点也是升级到最新开发的主题,同时也是为后续想升级旧版本 Hugo NexT 的用户打个样吧
凡梦星尘
2022/08/09
8750
Hugo NexT主题升级记录
hugo github action|vecel部署后文章更新时间异常修复
文章更新时间,本地和远程部署的不同,远程通过github action|vecel部署,远程部署后的时间不对,会把所有文章时间都更为最新。
六月河
2022/09/06
1.7K0
hugo github action|vecel部署后文章更新时间异常修复
Algolia搜索引擎
啊,事情是这样的,我呢平常就是闲得无聊,昨天打算搞一搞博客,看看有什么更新的。 然后我就想到博客还没有搜索这个东西,所以我就打算配置下搜索,不然的话有时候找东西实在太难找了。 (而且也很多人跟我说过,一直咕咕咕罢了QAQ)
筱锋xiao_lfeng
2022/03/16
1.3K0
Algolia搜索引擎
Python 实现 YouTube 视频自动上传
👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
Lorin 洛林
2024/09/30
3130
Python  实现 YouTube  视频自动上传
Hexo + butterfly 使用 Alogolia 替代本地搜索
Algolia 是一个托管搜索引擎,提供全文,数字和多面搜索,能够从第一次击键中提供实时结果,它提供了一组工具,可简化制作完整搜索体验并将其集成到您的网站和应用程序中的过程。这些包括:
公爵
2022/09/28
1K0
Hexo + butterfly 使用 Alogolia 替代本地搜索
Hugo 网站优化(9): 实时更新与缓存加速兼顾, 使用 Github Action 主动预热 CDN 缓存
于是, 我又盯上了 Github Action 的实现发布文章后主动预热网站, 这样在 CDN 中的缓存配置就更通用了。
老麦
2023/02/25
3K0
Hugo 网站优化(9): 实时更新与缓存加速兼顾, 使用 Github Action 主动预热 CDN 缓存
WordPress IndexNow提交教程,让搜索引擎快速收录
IndexNow 是一种协议,允许网站所有者将其网站上的新内容或修改内容通知多个搜索引擎。目前有 Bing 和 Yandex 加入,据说 Google 也正在尝试接入 IndexNow。你只需要在网站页面发生变更时去通过这个协议 Ping 一下搜索引擎,这样加入 IndexNow 的搜索引擎就会被成功通知到,有利于搜索引擎快速的发现新 URL,实现网站的快速收录。
张子凡
2022/11/02
1.2K0
WordPress IndexNow提交教程,让搜索引擎快速收录
npm自动改版本号+博客静态源代码自动上传
npm自动改版本号+博客静态源代码自动上传 碎碎念 在此之前 我食用了下 abeginner.cn 的Action配置 但是行不通 教程开始 1. 在source目录下创建index.js const fs = require('fs/promises') const index = async () => { const obj = { date: Date.now() + '' } const pageageFile = { name: process.env.NPM_N
Wlog
2022/12/10
5670
npm自动改版本号+博客静态源代码自动上传
编写自己的 GitHub Action,体验自动化部署
本文将介绍如何使用 GitHub Actions 部署前端静态页面,以及如何自己创建一个 Docker 容器 Action。
张凯强
2020/02/19
2.3K0
如何使用 Hugo 搭建个人博客?
从业 7 年来,搭建过不下 10 个网站,就个人博客而言,就已经搭建过 4 次,中间换了 4 个框架,从最早的 Hexo,再到 Django,再到 Sphinx,再到 Wordpress。
崔庆才
2024/06/18
2410
如何使用 Hugo 搭建个人博客?
Hugo 与 Hexo 的异同
前言 Hugo 是一个基于 Go 语言开发的静态网站生成器(SSG),目前由 @bep 领衔开发,Hugo 的突出特点是简洁、灵活、高效,目前有很多知名网站都在使用 Hugo:Netlify、Let’
莲花海
2020/01/21
4.4K0
hexo+github 搭建个人博客及美化
官方文档 是我们的第一手资料,也是最好的。 安装 Hexo 相当简单。然而在安装前,您必须检查电脑中是否已安装下列应用程序:
Cell
2022/02/25
5630
GitHub Actions + 腾讯云COS + SCF云函数 + 自动刷新CDN 完美自动化部署静态网站
作为强迫症患者,一直对自动化部署非常痴迷,个人认为全自动部署最重要的就是稳定可靠,经过研究测试,最终使用GitHub和腾讯云两大平台,成功完成了全自动部署网站的实践.
用户8851537
2021/07/30
1.5K0
Github Action执行时遇到SSH key invalid format错误
Github Action是款非常不错的CI/CD工具,自从它问世以来发展的速度真可谓是快,在 Github 的官方市场中几乎能找到所有你想要使用的Action脚本进行引用。本博客也是基于Github Action进行远程部署的,与常规的Github Pages服务不同,本站的静态文件是部署在国内某云厂商的静态服务器上面的,通过 tzzs/server-shell Action 集成,实现远程执行服务端的命令,来拉取最新生成的静态文件。
凡梦星尘
2024/11/20
1310
实时通信 | 轻量级搜索引擎MeiliSearch
MeiliSearch是一个功能强大,快速,开源,易于使用和部署的搜索引擎。搜索和索引都是高度可定制的。允许输入、过滤器和同义词等特性都是开箱即用的。是近两年开源的项目,同样也支持中文分词,在小数据规模下可以实现比ElasticSearch更加快速和易用的搜索体验。
Tinywan
2023/03/08
2.6K0
实时通信 | 轻量级搜索引擎MeiliSearch
使用 Dify、Meilisearch、零一万物模型实现最简单的 RAG 应用(三):AI 电影推荐
这篇文章,我们继续聊聊,如何折腾 AI 应用,把不 AI 的东西,“AI 起来”。在不折腾复杂的检索系统的前提下,快速完成轻量的 RAG 实践。
soulteary
2024/05/20
8920
使用 Dify、Meilisearch、零一万物模型实现最简单的 RAG 应用(三):AI 电影推荐
这篇文章,我们继续聊聊,如何折腾 AI 应用,把不 AI 的东西,“AI 起来”。在不折腾复杂的检索系统的前提下,快速完成轻量的 RAG 实践。
soulteary
2024/05/29
1.2K0
使用 Dify、Meilisearch、零一万物模型实现最简单的 RAG 应用(三):AI 电影推荐
Github Action实现友链状态检测
起初,我管理友链时采取的是手动点击检验的方式,但随着时间的推移,友链数量逐渐增加至73条,这一做法显然已不再高效。我曾看到一些大佬实现了直接在友链卡片上标注可达状态的功能,遗憾的是,我并没有找到相关的教程。在探索过程中,我发现友链圈里存在一个API,它能够返回未能成功抓取的链接,原理是,如果某个站点在过去两个月内未曾产出新文章,则被视为不可达。然而,这种滞后性的判定机制明显影响了友链监测的即时性,所以生成的结果还是仅供参考。
柳神
2024/06/24
1230
Github Action实现友链状态检测
使用Github Action自动化部署
如果有写过项目的经历,就免不了将代码上传到服务器上,安装依赖,然后输入启动命令的步骤。但是有的项目往往需要经常性的改动,如果还是照着上面的方式进行部署的话。先不说这样操作的效率,操作个几次就想罢工了。并且上面这样操作的往往容易误操作。而 Github Actions 正是该问题的良药。
愧怍
2022/12/27
1.8K0
使用Github Action自动化部署
推荐阅读
相关推荐
hugo loveit构建github page博客
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档