Algolia - Docsearch的申请配置安装【以踩坑解决版】
👨🎓博主简介
🏅CSDN博客专家
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
文章目录
- 简述
- 配置
- 注册
- 使用
- 官方申请
- 申请成功发送邮件
- 调试爬取
- 网站测试搜索
- 配置完成 - 总结回顾
推荐我的网站此文章:https://liuchenyang.top/document/other/docsearch.html
简述
文档参考:
- VitePress官方
- VuePress 不用Algolia 全文搜索那就缺了灵魂
结合自己操作记录来修改成vuepress-theme-hope主题的docsearch配置。
其实也有很多热门的爬虫搜索引擎,而Algolia的 Algolia DocSearch 是直接集成在VuePress中的,我们来看看有多么强大吧。
配置
这里配置的是vuepress主题的,最新版Hope主题自带algolia插件,无需安装,请在theme.ts
里定位到plugins设置。
- 插件版本注意事项
如果不是最新版本,在安装@vuepress/plugin-docsearch
插件的时候需要适配当前版本,具体是如何适配自己的版本不确定,只能在package.json
配置文件中去修改版本号来试,然后我安装了个70版本的,但是配置好之后搜索有点问题,问题:搜索的结果无法点击,然后我就一点一点往上升级到了rc74的版本,就可以了,指定升级插件版本命令为:pnpm add -D @vuepress/plugin-docsearch@2.0.0-rc.74
,安装的时候会自动删除原版本更新成配置文件中指定的版本或指定下载的版本,如果安装好访问页面空白的话,大概率就是版本的问题。
plugins: {docsearch:({appId: "<APP_ID>",apiKey: "<API_KEY>",indexName: "<INDEX_NAME>",locales: {"/": {placeholder: "搜索文档",translations: {button: {buttonText: "搜索文档",buttonAriaLabel: "搜索文档",},modal: {searchBox: {resetButtonTitle: "清除查询条件",resetButtonAriaLabel: "清除查询条件",cancelButtonText: "取消",cancelButtonAriaLabel: "取消",},startScreen: {recentSearchesTitle: "搜索历史",noRecentSearchesText: "没有搜索历史",saveRecentSearchButtonTitle: "保存至搜索历史",removeRecentSearchButtonTitle: "从搜索历史中移除",favoriteSearchesTitle: "收藏",removeFavoriteSearchButtonTitle: "从收藏中移除",},errorScreen: {titleText: "无法获取结果",helpText: "你可能需要检查你的网络连接",},footer: {selectText: "选择",navigateText: "切换",closeText: "关闭",searchByText: "搜索提供者",},noResultsScreen: {noResultsText: "无法找到相关结果",suggestedQueryText: "你可以尝试查询",reportMissingResultsText: "你认为该查询应该有结果?",reportMissingResultsLinkText: "点击反馈",},},},},},}),},
注册
由于配置还缺关键Key,所以还需要注册账号,也方便我们后期对数据进行管理
进入 Algolia官网 ,点击 Login
注册账号
可以选择 NO ACCOUNT YET?
,也可以直接用GitHub和谷歌账号关联注册
注册比较简单,就不讲了
网站打不开,挂一个梯子即可
使用
请按自己的需求,参照下面教程,选其一使用
使用方式 | 区别说明 |
---|---|
官方申请 | 申请时需要提交链接、邮箱及仓库(可选) ,等待周期较长,通过后会自动爬取,直接配置使用即可 |
Docker | 需自备服务器且安装好docker,有一定动手能力,需要每次手动爬取。步骤繁琐本次不做演示 |
Github Actions | 准备一个公开或者私密的仓库,配置好爬虫数据的格式,Actions自动爬取 |
官方申请
直接在 DocSearch官网,点 Apply 申请
打开后填写网站地址、邮箱和仓库地址(可选)等信息,然后勾选上下面三项,并提交即可。
等待跳转成功就好,没有跳转,就挂个梯子
之后就静待邮件,最快等待6-7小时,慢则半个多月,在邮件中会给我们一个邀请链接,复制并打开。
官方邮箱地址:support@algolia.com
申请成功发送邮件
申请成功之后,将邮件中的addId
、apiKey
、indexName
值放到项目配置中。
就这么简单么,so easy !当你以为一切顺利万事大吉的时候,然而,很可能你的全文搜索还不可以用。可能一搜还都是找不到结果,那这是为何呢,文章还未结束,配置还在进行,且往下看!
调试爬取
然后我们登陆 https://dashboard.algolia.com/apps/DJTP2DCRA4/dashboard 打开管理后台,点击左侧选项栏里的 Search,进去后会有个弹窗按钮,点 Accept
接受即可
没有弹窗的,去邮箱复制邀请链接打开应该就有了;
这样就自动完成了Application创建;
然后查看对应的 index
数据,如果 Browse
这里没有显示数据,那需要点击这里的刷新看看,有数据即可;
如果刷新之后如果还是没有显示数据,那说明爬取的数据可能有问题,导致没有生成对应的 Records
;
这个时候要使用官方工具进行调试,进入调试工具地址,打开调试台,点击进入爬虫详情;
进来之后在点击 Overview
菜单,发现爬虫数据是有的,但 Records 为 0,那大概是爬虫提取数据的逻辑有问题;
点击左侧选项栏中的 Editor
,查看具体的爬虫逻辑,可以根据 vuepress 官方提供的模版参考查看问题:vuepress官方爬虫配置,这里我是直接整个复制粘贴成官方的然后进行个别地方修改就可以了;
除了指定位置,其他不要乱改,特别是apikey不要改!和你申请的apikey不是同一个用途
如果你网址有别名解析或者重定向了,也只能用你申请时的网址
- 官方爬虫设置
new Crawler({appId: "YOUR_APP_ID",apiKey: "YOUR_API_KEY",rateLimit: 8,startUrls: [// 这是 Algolia 开始抓取网站的初始地址// 如果你的网站被分为数个独立部分,你可能需要在此设置多个入口链接"https://YOUR_WEBSITE_URL/",],sitemaps: [// 如果你在使用 Sitemap 插件 (如: @vuepress/plugin-sitemap),你可以提供 Sitemap 链接"https://YOUR_WEBSITE_URL/sitemap.xml",],ignoreCanonicalTo: false,exclusionPatterns: [// 你可以通过它阻止 Algolia 抓取某些 URL],discoveryPatterns: [// 这是 Algolia 抓取 URL 的范围"https://YOUR_WEBSITE_URL/**",],// 爬虫执行的计划时间,可根据文档更新频率设置schedule: "at 02:00 every 1 day",actions: [// 你可以拥有多个 action,特别是你在一个域名下部署多个文档时{// 使用适当的名称为索引命名indexName: "YOUR_INDEX_NAME",// 索引生效的路径pathsToMatch: ["https://YOUR_WEBSITE_URL/**"],// 控制 Algolia 如何抓取你的站点recordExtractor: ({ $, helpers }) => {// 以下是适用于 vuepress-theme-hope 的默认选项选项return helpers.docsearch({recordProps: {lvl0: {selectors: [".vp-sidebar-link.active", "[vp-content] h1"],defaultValue: "Documentation",},lvl1: "[vp-content] h1",lvl2: "[vp-content] h2",lvl3: "[vp-content] h3",lvl4: "[vp-content] h4",lvl5: "[vp-content] h5",lvl6: "[vp-content] h6",content: "[vp-content] p, [vp-content] li",},recordVersion: "v3",});},},],initialIndexSettings: {// 控制索引如何被初始化,这仅当索引尚未生成时有效// 你可能需要在修改后手动删除并重新生成新的索引YOUR_INDEX_NAME: {attributesForFaceting: ["type", "lang"],attributesToRetrieve: ["hierarchy", "content", "anchor", "url"],attributesToHighlight: ["hierarchy", "hierarchy_camel", "content"],attributesToSnippet: ["content:10"],camelCaseAttributes: ["hierarchy", "hierarchy_radio", "content"],searchableAttributes: ["unordered(hierarchy_radio_camel.lvl0)","unordered(hierarchy_radio.lvl0)","unordered(hierarchy_radio_camel.lvl1)","unordered(hierarchy_radio.lvl1)","unordered(hierarchy_radio_camel.lvl2)","unordered(hierarchy_radio.lvl2)","unordered(hierarchy_radio_camel.lvl3)","unordered(hierarchy_radio.lvl3)","unordered(hierarchy_radio_camel.lvl4)","unordered(hierarchy_radio.lvl4)","unordered(hierarchy_radio_camel.lvl5)","unordered(hierarchy_radio.lvl5)","unordered(hierarchy_radio_camel.lvl6)","unordered(hierarchy_radio.lvl6)","unordered(hierarchy_camel.lvl0)","unordered(hierarchy.lvl0)","unordered(hierarchy_camel.lvl1)","unordered(hierarchy.lvl1)","unordered(hierarchy_camel.lvl2)","unordered(hierarchy.lvl2)","unordered(hierarchy_camel.lvl3)","unordered(hierarchy.lvl3)","unordered(hierarchy_camel.lvl4)","unordered(hierarchy.lvl4)","unordered(hierarchy_camel.lvl5)","unordered(hierarchy.lvl5)","unordered(hierarchy_camel.lvl6)","unordered(hierarchy.lvl6)","content",],distinct: true,attributeForDistinct: "url",customRanking: ["desc(weight.pageRank)","desc(weight.level)","asc(weight.position)",],ranking: ["words","filters","typo","attribute","proximity","exact","custom",],highlightPreTag:'<span class="algolia-docsearch-suggestion--highlight">',highlightPostTag: "</span>",minWordSizefor1Typo: 3,minWordSizefor2Typos: 7,allowTyposOnNumericTokens: false,minProximity: 1,ignorePlurals: true,advancedSyntax: true,attributeCriteriaComputedByMinProximity: true,removeWordsIfNoResults: "allOptional",},},
});
配置完成后,点击右上角的 save
进行保存在;然后找个自己的文档的链接,粘贴到URL Tester
里,点击RUN Test
测试下,看是否能成功,成功则进行下一步,否则继续调整抓取规则,指导能抓取成功!如下图,多测几个链接,保证都可用。
链接测试完成后,可以在 Search Preview
里可以搜素看看,能搜索到自己的内容就可以了;
然后返回到 Overview
菜单, 点击右上角的 Restart crawling
按钮,重新进行抓取,爬取成功之后会发送邮件,文章少爬取的就快,成功后,下面的 Indices
栏会显示 Records
数;
然后在返回点击index
回到algolia,看数据是否同步过来就可以了,前面做完没问题这个同步正常也是会没问题的;
网站测试搜索
此时再去自己的网站试试,应该就可以了,如果不行,就重复爬取一下数据,再等一等再试!
配置完成 - 总结回顾
对于 vuepress 来说,就是安装个插件配置参数的事,可还是让人耽误了好些时间。官方文档中并未对常见的一些问题予以说明,还需咱们自己踩坑,希望大家也能将自己日常踩的坑分享出来,避免更多的人,无休止的耗费精力。祝大家一切顺利,所踩之坑,皆能被填平!
据说,点免费Star的人都被领导加鸡腿了!😄 ToLiucyLinux私域源码
相关文章:

Algolia - Docsearch的申请配置安装【以踩坑解决版】
👨🎓博主简介 🏅CSDN博客专家 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入!…...

Linux513 rsync本地传输 跨设备传输 一
ping节点bPing通 仅主机模式不需要设置网关节点a也可以Ping通节点b 同步成功 下载文件夹成功 今日源码 节点a 节点b...

leetcode 383. Ransom Note
题目描述 代码 class Solution { public:bool canConstruct(string ransomNote, string magazine) {vector<int> table(26,0);for(char ch : magazine){table[ch-a];}for(char ch : ransomNote){table[ch-a]--;if(table[ch-a] < 0)return false;}return true;} };...

Skyvern:用 AI+视觉驱动浏览器自动化
Skyvern:用 AI视觉驱动浏览器自动化 一、前言二、项目概览2.1 Skyvern 项目简介2.2 代码结构与模块划分 三、环境搭建与快速上手3.1 环境准备3.1.1 系统与依赖3.1.2 克隆项目3.1.3 安装 Python 依赖3.1.4 配置环境变量3.1.5 启动服务 3.2 验证安装 四、核心功能与实…...

数据库原理期末考试速成--最后附带两套题
引言 为什么从3开始呢,毕竟是速成吗,总要放弃一些东西 前两章1.概论 2.关系数据库:这里面都是一些运算符什么的,我感觉都学这个:笛卡尔积之列的都会算 这两章比较重要的我就放在这里了 选择、投影、连接、除、并、交、差,其中选择、投影、并、差、笛卡尔积是5种基本关…...
《探索React Native社交应用中WebRTC实现低延迟音视频通话的奥秘》
WebRTC,全称为Web Real-Time Communication,是一项开创性的开源技术,为Web和移动应用开启了实时通信的大门。它打破了传统通信的束缚,使得应用之间无需依赖繁琐的中间服务器,就能实现直接的点对点通信,这是…...
关于vue 本地代理
接口调用:其中我们可以约定一个拦截的标识, 用来给本地 http://localhost/ 进行代理要请求的测试地址https:abc.com 例子: axios.post(/OwnRateReport/-------------------------------------------------------00001)devServer: {proxy: {/…...
#跟着若城学鸿蒙#HarmonyOS NEXT学习之Blank组件详解
一、组件介绍 Blank(空白)组件是HarmonyOS NEXT中一个简单但非常实用的UI组件,它主要用于在布局中创建空白区域,帮助开发者更灵活地控制界面元素之间的间距和布局结构。虽然Blank组件本身不显示任何内容,但它在界面设…...
PX4开始之旅(二)通过自定义 MAVLink 消息与 QGroundControl (QGC) 通信
核心知识点:通过自定义 MAVLink 消息与 QGroundControl (QGC) 通信 1. 通俗易懂的解释 想象一下,MAVLink 就像是无人机(飞控)和地面站(QGroundControl)之间约定好的一种“语言”。这种语言有很多标准的“…...

数据结构基础--蓝桥杯备考
1.优缺点总述 STL中各容器对比图 各类线性数据结构优缺点 1.数组 1.优点 1.简单,容易理解 2.访问快捷,只需要用下标就可以 3.有某些应用场景直接对应,例如二维数组对应平面 2.缺点 删除和插入数据非常耗时 2.链表 1.优点 插入和删…...

2.4GHz无线通信芯片选型指南:集成SOC与低功耗方案解析
今天给大家分享几款2.4GHz无线通信芯片方案: 一、集成SOC芯片方案 XL2407P(芯岭技术) 集成射频收发机和微控制器(如九齐NY8A054E) 支持一对多组网和自动重传 发射功率8dBm,接收灵敏度-96.5dBm(…...
安卓刷机模式详解:Fastboot、Fastbootd、9008与MTK深刷
安卓刷机模式详解:Fastboot、Fastbootd、9008与MTK深刷 一、刷机模式对比 1. Fastboot模式 简介:传统安卓底层刷机模式,通过USB连接电脑操作优点:支持大多数安卓设备,操作相对简单缺点:需要设备进入特定…...

Unity_JK框架【5】音效系统实现
在游戏开发中,音频是不可或缺的一部分,它能够极大地增强游戏的沉浸感和趣味性。今天,我们就用JK框架 探讨一下如何在Unity中实现一个强大的音频系统,并且通过实际的测试脚本来验证其功能👏。 一、音频模块类࿱…...

鸿蒙 从打开一个新窗口到Stage模型的UIAbility组件
打开一个新的窗口 我们首先来实现如何在一个应用中打开一个新窗口,使用的模型是 Stage 模型 在项目文件里,新建一个 newWindow.ets 新文件 src/main/ets/pages/newWindow.ets newWindow.ets文件里面随便写点什么都行,这里是第一步创建的文件…...
MySQL数据库——视图
目录 一、视图是什么? 二、特点 三、创建视图 四.查询视图 五.更新视图 六.视图的作用 总结 一、视图是什么? 视图是从一个或多个表中导出的虚拟表,它本身不存储数据,而是基于 SQL 查询的结果集。 二、特点 1.虚拟性࿱…...
redis数据结构-09 (ZADD、ZRANGE、ZRANK)
Redis 排序集简介:ZADD、ZRANGE、ZRANK Redis 有序集合是一种功能强大的数据结构,兼具集合和哈希的特性。它维护一组唯一元素,类似于集合;但每个元素都与一个分数相关联,类似于哈希。分数用于对有序集合中的元素进行排…...
PyTorch API 1 - 概述、数学运算、nn、实用工具、函数、张量
文章目录 torch张量创建操作索引、切片、连接与变异操作 加速器生成器随机采样原地随机采样准随机采样 序列化并行计算局部禁用梯度计算数学运算常量逐点运算归约操作比较运算频谱操作其他操作BLAS 和 LAPACK 运算遍历操作遍历操作遍历操作遍历操作遍历操作遍历操作遍历操作遍历…...

长短期记忆网络(LSTM)深度解析:理论、技术与应用全景
长短期记忆网络(LSTM)作为循环神经网络(RNN)的重要变体,通过门控机制有效解决了传统RNN的梯度消失问题,成为时序数据处理的核心技术。本文从理论起源、数学建模、网络架构、工程实现到行业应用,…...

c语言第一个小游戏:贪吃蛇小游戏02
接上文继续学习 ncurse的上下左右键获取 想要使用ncurse的功能键,也就是键盘快捷键,不是q、r、t,是 上下左右、F1、F2等等的键,我们叫做功能键要是想用这些功能键需要使用keypad函数 Keypad(stdscr,1); 从stdscr接收标准中&…...
【Python爬虫 !!!!!!政府招投标数据爬虫项目--医疗实例项目文档(提供源码!!!)!!!学会Python爬虫轻松赚外快】
政府招投标数据爬虫项目--医疗实例项目文档 1. 项目概述1.1 项目目标1.2 技术栈 2. 系统架构2.1 模块划分2.2 流程示意图 3. 核心模块设计3.1 反爬处理模块(utils/anti_crawler.py)3.1.1 功能特性3.1.2 关键代码 3.2 爬虫模块(crawler/spider…...

Android架构之自定义native进程
在Android五层架构中,native层基本上全是c的世界,这些c进程基本上靠android世界的第一个进程init进程创建,init通过rc配置文件,创建了众多的c子进程,也是这众多的c进程,构建了整个android世界的native层。 …...
talk-centos6之间实现
在 CentOS 6.4 上配置和使用 talk 工具,需要注意系统版本较老,很多配置可能不同于现代系统。我会提供 详细步骤 自动化脚本,帮你在两台 CentOS 6.4 机器上实现局域网聊天。 ⸻ 🧱 一、系统准备 假设你有两台主机: …...

《100天精通Python——基础篇 2025 第18天:正则表达式入门实战,解锁字符串处理的魔法力量》
目录 一、认识正则表达式二、正则表达式基本语法2.1 行界定符2.2 单词定界符2.3 字符类2.4 选择符2.5 范围符2.6 排除符2.7 限定符2.8 任意字符2.9 转义字符2.10 反斜杠2.11 小括号2.11.1 定义独立单元2.11.2 分组 2.12 反向引用2.13 特殊构造2.14 匹配模式 三、re模块3.1 comp…...
数组中元素如何交换与打乱
1 问题 在本周学习了java基础语法中的数组,在学习数组后,我们会遇到关于数组中元素的倒序,交换,和无序打乱等问题,在Python中我们可以用list的方法进行元素倒序,那么我们在java中应该如何实现数组用元素的倒序和元素的打乱呢? 2 方法 使用循环,Random类,下标索引实现 关于元素…...

Nuitka 已不再安全? Nuitka/Cython 打包应用逆向工具 -- pymodhook
pymodhook是一个记录任意对Python模块的调用的库,用于Python逆向分析。 pymodhook库类似于Android的xposed框架,但不仅能记录函数的调用参数和返回值,还能记录模块的类的任意方法调用,以及任意派生对象的访问,基于pyob…...

【C】初阶数据结构14 -- 归并排序
本篇文章主要是讲解经典的排序算法 -- 归并排序 目录 1 递归版本的归并排序 1) 算法思想 2) 代码 3) 时间复杂度与空间复杂度分析 (1) 时间复杂度 (2) 空间复杂度 2 迭代版本的归并…...

华为网路设备学习-21 IGP路由专题-路由过滤(filter-policy)
一、路由过滤(filter-policy) 1、用于控制路由更新、接收的一个工具 2、只能过滤路由信息,无法过滤LSA 二、路由过滤(filter-policy)与动态路由协议 1、距离矢量路由协议 RIP动态路由协议 交换的是路由表࿰…...
NestJS 框架深度解析
框架功能分析 NestJS 是一个基于 Node.js 的渐进式框架,专为构建高效、可扩展的服务器端应用程序而设计。其核心理念结合了 面向对象编程(OOP)、函数式编程(FP) 和 函数式响应式编程(FRP)&…...
人脸识别门禁系统技术文档
人脸识别门禁系统技术文档 序言 本文档详细描述了人脸识别门禁系统的技术实现原理与方法。该系统旨在提供高安全性的门禁管理解决方案,通过先进的人脸识别技术,实现无接触式身份验证,提高安全管理效率。 系统整合了人工智能与计算机视觉技…...

SAP 交货单行项目含税金额计算报cx_sy_zerodivide处理
业务背景:SAP交货单只有数量,没有金额,所以开发报表从订单的价格按数量计算交货单的金额。 用户反馈近期报表出现异常: ****2012/12/12 清风雅雨 规格变更 Chg 修改开始 ** 修改原因:由于余数为0时,可能会报错溢出。…...