星际穿越

VuePress添加Algolia搜索

2020-06-21

注册Algolia账号,并新建Index;新建API Key,需要有searchaddObjecteditSettingsdeleteIndex权限

创建配置文件

.env文件

1
2
APPLICATION_ID=YOUR_APP_ID
API_KEY=YOUR_ADMIN_KEY

config.json文件(示例仅供参考)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"index_name": "docs_test",
"start_urls": ["https://licoded.gitee.io/docs/"],
"selectors": {
"lvl0": {
"selector": "p.sidebar-heading.open",
"global": true,
"default_value": "Documentation"
},
"lvl1": ".content__default h1",
"lvl2": ".content__default h2",
"lvl3": ".content__default h3",
"lvl4": ".content__default h4",
"lvl5": ".content__default h5",
"lvl6": ".content__default h6",
"text": ".content__default p, .content__default ul, .content__default li, .content__default blockquote,a.header-anchor"
}
}

使用docker爬取数据并添加到Index

部分操作仅适用于Manjaro

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装jq和docker
yay -S jq docker
# 配置docker镜像
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://yourid.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 运行docker爬虫
docker run -it --env-file = .env -e“ CONFIG = $(cat /path/to/your/config.json | jq -r tostring)” algolia / docsearch-scraper
# 注意config.json一定要使用绝对路径

用Algolia Search替换内置搜索

在config.js的themeConfig中添加如下配置

1
2
3
4
5
6
7
8
9
10
11
{
algolia: {
appId: "APP ID",
apiKey: "API Key",
indexName: "docs_test",
algoliaOptions: {
hitsPerPage: 10,
facetFilters: "",
},
},
}

package.json 中添加快捷命令

1
2
3
{
"algolia": "cd docs/.vuepress/algolia && sudo sh crawl.sh"
}

完成上述配置以后,就只需要执行 yarn algolia 便可以同步更新 Algolia 的 Index,但要注意一定要先把项目发布到线上,因为docker的爬虫爬取的是线上的网站而非本地的。

参考链接: