但我们把所有的工作流程准备就绪后,我们就可以前往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',
debug: false // 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