但我们把所有的工作流程准备就绪后,我们就可以前往Algolia管理自己的后台数据了,主要步骤:

步骤一、登录到Algolia里面的控制台

链接的文件不可用_什么叫链接文件不可用_文件链接不可用

Algolia控制台

步骤二、可以查看当前自己的Application应用的Plan类别,如下:

Plan类别是DOCSEARCH类型的应用,代表我们可以免费使用Algolia的爬虫服务,会自动爬取我们的网站文档进行索引

如果是FREE类别,则没有这种服务,你也登录不了Algolia的爬虫后台

链接的文件不可用_文件链接不可用_什么叫链接文件不可用

Algolia应用列表

步骤三、点击Search后,即可查看该文档页面的Index数据集

链接的文件不可用_什么叫链接文件不可用_文件链接不可用

Algolia Index数据集

这里Index有数据是核心和关键,如果你的搜索服务不可用,首先要确认一下该Index中是否有数据,或者你文档中配置的搜索配置信息是否正确。

第三,确认自己的爬虫后台是否有问题,登录到Algolia的爬虫后台,地址:

确认右侧Indices中有数据才正常

什么叫链接文件不可用_文件链接不可用_链接的文件不可用

Algolia Index数据集

因为Knife4j的DocSearch申请的已经有一段时间了,只是在搜索的时候一直无法展示结果(这让我也一直很困惑),所以,我们就可以使用docusaurus提供的官方algolia插件进行集成搜索

2.2 自己通过Algolia的爬虫送数据

Algolia除了通过DocSearch的方式进行申请,免费使用Algolia的爬虫服务,如果有一些特殊原因,或者最终没有被Algolia的官方社区审核通过,那么也是可以使用Algolia的搜索服务的,可以自己注册Algolia的后台,然后创建Application(应用)

创建应用后,就可以通过Algolia提供的爬虫程序(离线工具)自己设置爬虫规则,将爬取的数据送到Algolia控制台。

本文只介绍通过Docker镜像来运行爬虫的工具,其他方式可以参考官方文档:

docker命令

docker run -it --env-file=.env algolia/docsearch-scraper

然后配置.env环境变量,主要有三个:

image-20230531093722644

Config示例如下:

{
    "index_name""knife4j",
    "start_urls": [
        "https://doc.xiaominfo.com/docs/middleware-sources",
        "https://doc.xiaominfo.com/docs/oas",
        "https://doc.xiaominfo.com/docs/action",
        "https://doc.xiaominfo.com/docs/changelog",
        "https://doc.xiaominfo.com/docs/faq",
        "https://doc.xiaominfo.com/v2/"
    ],
    "selectors": {
        "lvl0"".docMainContainer_gTbr header h1",
        "lvl1"".docMainContainer_gTbr article h1",
        "lvl2"".docMainContainer_gTbr article h2",
        "lvl3"".docMainContainer_gTbr article h3",
        "lvl4"".docMainContainer_gTbr article h4",
        "lvl5"".docMainContainer_gTbr article h5",
        "text"".docMainContainer_gTbr header p,.docMainContainer_gTbr section p,.docMainContainer_gTbr section ol"
    }
}

几个重要的参数:

当然还有更详细的规则,具体的可以参考文档进行配置即可。

最终运行docker命令爬虫效果如下:

Algolia 爬虫日志

等我们的爬虫在本地运行完成后,我们就可以登录后台查看我们的记录是否成功,现在的records就是最终的文档记录数

文件链接不可用_什么叫链接文件不可用_链接的文件不可用

Algolia Index数据集3.简单验证Algolia的数据结果&搜索

在上面的章节中我们介绍了怎么在Algolia进行索引数据,主要包括两种方式:

这两种方式任何一种你都可以成功索引文档数据,如果在Algolia的控制台能看到数据,那么你可以通过下面一个小demo来验证搜索结果了,废话不多说,直接上html测试代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@docsearch/css@3"/></pre></li>
</head>
<body>

<div id="test"></div>

<script src="https://cdn.jsdelivr.net/npm/@docsearch/js@3"></script>
<script type="text/javascript">

  docsearch({

    appId:"替换为你自己的appid",


    apiKey"替换为你自己的apikey",

    indexName"替换为你自己的indexName",

    container'#test',

    debugfalse // Set debug to true if you want to inspect the modal

  });

</script>
</body>
</html>

界面效果如下:

什么叫链接文件不可用_文件链接不可用_链接的文件不可用

Algolia 搜索示例

代码中的appid、key需要替换为自己的,可以在Algolia后台获取:

链接的文件不可用_文件链接不可用_什么叫链接文件不可用

Algolia API Keys4.Docusaurus集成

前面已经提过,由于docusaurus官方提供了对Algolia的支持,所以万事俱备,只需要配置即可,在docusaurus.config.js配置文件中,直接配置appid、key就可以了

themeConfig:
    /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({
            // others....
            algolia: {
                appId: '3CRIMRK623',
                apiKey: 'ae4f57f208e3c7749017e09582f0b8a4', // search only (public) API key
                indexName: 'xiaominfo',
                contextualSearch: false,
                debug: true
            },
        }),

效果如下:

链接的文件不可用_什么叫链接文件不可用_文件链接不可用

Algolia 搜索效果

docusaurus的搜索插件可以查看文档:

文件链接不可用_什么叫链接文件不可用_链接的文件不可用

介绍的都是比较详细的,但是最值得注意的来了(这也是Knife4j在Algolia后台数据有了,就是死活搜索不出来)

最坑的就是这个上下文搜索参数:contextualSearch

由于该参数在Docusaurus的插件中默认开启,导致他会和上下文约束面过滤器 (contextual facet filters) 会和algolia.searchParameters.facetFilters合并配合使用,增加了一些不必要的过滤器,最终就会搜索没有结果

如果你没有该需求或者场景,那么需要给他关闭,配置修改contextualSearch参数为false

我也是对比了步骤3中通过一个简单的html集成查看Algolia请求参数的差异才发现这个区别,为啥Knife4j明明数据有了,就是搜索不出来。。。。。累了。。。。

5.最后

目前Knife4j的官网文档终于开启了搜索功能,希望能够帮助到使用Knife4j的同学更好的检索文档。

如果有对Algolia不明白的,可以加Knife4j的微信讨论群(关注微信公众号点击菜单获取群二维码)与作者沟通交流。

限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信:11082411

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。