docusaurus配置algolia搜索
1.前期准备
1.1 注册algolia账号
自行登陆 algolia官网 注册账号
1.2 创建索引
注册完并且完成邮件验证后会默认创建一个 My First Application
程序
在这个 My First Application
程序下创建一个索引
这里创建一个名为 docusaurus
的索引
1.3 获取API Key
点击左下角的 Settings
, 在右上角的 Team and Access
处点击下边的 API Keys
需要获取 Application ID
、Search-Only API Key
和 Admin API Key
2.安装插件
2.1 安装 algolia docsearch 插件
npm install --save @docusaurus/theme-search-algolia
2.2 安装 sitemap 插件
npm install --save @docusaurus/plugin-sitemap
3.配置 docusaurus
3.1 配置 algolia docsearch 插件
编辑 docusaurus.config.js
,填写如下配置
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
// Replace with your project's social card
......
algolia: {
apiKey: "Search-Only API Key",
appId: "Application ID",
indexName: "索引名称",
},
......
}),
};
完成配置后刷新浏览器,就会看到在最右上角会出现一个搜索框
打开后效果如下
3.2 配置 sitemap 插件
编辑 docusaurus.config.js
,填写如下配置
presets: [
[
...
sitemap: {
changefreq: 'weekly',
priority: 0.5,
ignorePatterns: ['/tags/**'],
filename: 'sitemap.xml',
},
...
],
],
4.推送数据
algolia官方提供2种方式
这里我们选择自行运行爬虫程序
4.1 安装依赖环境
安装docker
# 阿里云yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
systemctl start docker && systemctl enable docker
# 配置阿里云镜像加速地址
cat > /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://gqk8w9va.mirror.aliyuncs.com"]
}
EOF
# 配置完成后重启docker
systemctl restart docker
安装jq
yum -y install jq
4.2 编辑配置文件
编辑 .env
文件
APPLICATION_ID=Application ID
API_KEY=Admin API Key
编辑 config.json
文件
说明
需要将 start_urls
和 sitemap_urls
中的 xxx.com
替换为自己的域名
需要将 index_name
中的 xxx
替换为自己的索引名称
{
"index_name": "xxx",
"start_urls": [
"https://xxx.com/"
],
"sitemap_urls": [
"https://xxx.com/sitemap.xml"
],
"stop_urls": [
"/search",
"/v3me",
"/playground",
"/inspector"
],
"sitemap_alternate_links": true,
"selectors": {
"lvl0": {
"selector": "(//ul[contains(@class,'menu__list')]//a[contains(@class, 'menu__link menu__link--sublist menu__link--active')]/text() | //nav[contains(@class, 'navbar')]//a[contains(@class, 'navbar__link--active')]/text())[last()]",
"type": "xpath",
"global": true,
"default_value": "Documentation"
},
"lvl1": "header h1",
"lvl2": "article h2",
"lvl3": "article h3",
"lvl4": "article h4",
"lvl5": "article h5, article td:first-child",
"lvl6": "article h6",
"text": "article p, article li, article td:last-child"
},
"strip_chars": " .,;:#",
"custom_settings": {
"separatorsToIndex": "_",
"attributesForFaceting": [
"language",
"version",
"type",
"docusaurus_tag"
],
"attributesToRetrieve": [
"hierarchy",
"content",
"anchor",
"url",
"url_without_anchor",
"type"
]
},
"js_render": true,
"nb_hits": 856
}
4.3 运行爬虫
docker run \
--rm \
-it \
--env-file=.env \
-e "CONFIG=$(cat config.json | jq -r tostring)" \
algolia/docsearch-scraper
如果返回如下,说明已经爬取到记录
> DocSearch: http://xxx.com/ 1 records)
Nb hits: 1
在algolia官网中可以看到爬取的记录