Algolia - Docsearch的申请配置安装【以踩坑解决版】

news2025/5/15 4:50:34

👨‍🎓博主简介

  🏅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

申请成功发送邮件

申请成功之后,将邮件中的addIdapiKeyindexName值放到项目配置中。

就这么简单么,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私域源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2375806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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&#xff1a;用 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种基本关…

数据结构基础--蓝桥杯备考

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

2.4GHz无线通信芯片选型指南:集成SOC与低功耗方案解析

今天给大家分享几款2.4GHz无线通信芯片方案&#xff1a; 一、集成SOC芯片方案 XL2407P&#xff08;芯岭技术&#xff09; 集成射频收发机和微控制器&#xff08;如九齐NY8A054E&#xff09; 支持一对多组网和自动重传 发射功率8dBm&#xff0c;接收灵敏度-96.5dBm&#xff08…

Unity_JK框架【5】音效系统实现

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

鸿蒙 从打开一个新窗口到Stage模型的UIAbility组件

打开一个新的窗口 我们首先来实现如何在一个应用中打开一个新窗口&#xff0c;使用的模型是 Stage 模型 在项目文件里&#xff0c;新建一个 newWindow.ets 新文件 src/main/ets/pages/newWindow.ets newWindow.ets文件里面随便写点什么都行&#xff0c;这里是第一步创建的文件…

长短期记忆网络(LSTM)深度解析:理论、技术与应用全景

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

c语言第一个小游戏:贪吃蛇小游戏02

接上文继续学习 ncurse的上下左右键获取 想要使用ncurse的功能键&#xff0c;也就是键盘快捷键&#xff0c;不是q、r、t&#xff0c;是 上下左右、F1、F2等等的键&#xff0c;我们叫做功能键要是想用这些功能键需要使用keypad函数 Keypad(stdscr,1); 从stdscr接收标准中&…

Android架构之自定义native进程

在Android五层架构中&#xff0c;native层基本上全是c的世界&#xff0c;这些c进程基本上靠android世界的第一个进程init进程创建&#xff0c;init通过rc配置文件&#xff0c;创建了众多的c子进程&#xff0c;也是这众多的c进程&#xff0c;构建了整个android世界的native层。 …

《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…

Nuitka 已不再安全? Nuitka/Cython 打包应用逆向工具 -- pymodhook

pymodhook是一个记录任意对Python模块的调用的库&#xff0c;用于Python逆向分析。 pymodhook库类似于Android的xposed框架&#xff0c;但不仅能记录函数的调用参数和返回值&#xff0c;还能记录模块的类的任意方法调用&#xff0c;以及任意派生对象的访问&#xff0c;基于pyob…

【C】初阶数据结构14 -- 归并排序

本篇文章主要是讲解经典的排序算法 -- 归并排序 目录 1 递归版本的归并排序 1&#xff09; 算法思想 2&#xff09; 代码 3&#xff09; 时间复杂度与空间复杂度分析 &#xff08;1&#xff09; 时间复杂度 &#xff08;2&#xff09; 空间复杂度 2 迭代版本的归并…

华为网路设备学习-21 IGP路由专题-路由过滤(filter-policy)

一、路由过滤&#xff08;filter-policy&#xff09; 1、用于控制路由更新、接收的一个工具 2、只能过滤路由信息&#xff0c;无法过滤LSA 二、路由过滤&#xff08;filter-policy&#xff09;与动态路由协议 1、距离矢量路由协议 RIP动态路由协议 交换的是路由表&#xff0…

SAP 交货单行项目含税金额计算报cx_sy_zerodivide处理

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

【Qt】之音视频编程1:QtAV的背景和安装篇

QtAV 背景与核心概念 1. 什么是 QtAV&#xff1f; QtAV 是一个基于 Qt 框架 和 FFmpeg 的多媒体播放库&#xff0c;旨在为 Qt 应用程序提供高性能、跨平台的音视频播放、处理及渲染功能。它封装了 FFmpeg 的底层编解码能力&#xff0c;并通过 Qt 的图形系统&#xff08;如 QM…

算法与数据结构 - 二叉树结构入门

目录 1. 普通二叉树结构 1.1. 常见术语 1.2. 完全二叉树 (Complete Binary Tree) 1.3. 满二叉树 (Full Binary Tree) 2. 特殊二叉树结构 2.1. 二叉搜索树 (BST) 2.1.1. BST 基本操作 - 查找 2.1.2. BST 基本操作 - 插入 2.1.3. BST 基本操作 - 删除 2.2. 平衡二叉树…

如何使用远程桌面控制电脑

目的&#xff1a; 通过路由器使用pc控制台式机&#xff0c;实现了有线/无线pc与台式机的双向远程桌面控制 最核心就两条&#xff1a;get ip地址与被控制机器的账户与密码。 现象挺神奇&#xff1a;被控制电脑的电脑桌面处于休眠模式&#xff0c;此时强行唤醒被控电脑会导致中断…

SpringMVC-执行流程

目录 前言 一、SpringMVC执行流程 SpringMVC 主要组件 SpringMVC 的执行流程 简要分析执行流程 总结 前言 理解SpringMVC的执行流程是学习SpringMVC工作原理的重要一步。 项目内容参考&#xff1a;SpringMVC-简介及入门-CSDN博客 一、SpringMVC执行流程 SpringMVC 主要组…