博客配置全文搜索
vuepress 的内置搜索只会为页面的标题、h2 、 h3 以及 tags 构建搜索索引,无法达到全文搜索,详见 vuepress 内置搜索 (opens new window)
如果想全文搜索,有以下方案
- Algolia: 第三方免费搜索服务;定期抓取博客内容(24h),也可以手动触发抓取。本博客目前采用方案
- meilisearch: 基于 Algolia 开发的搜索服务,支持将博客主动部署到云服务进行搜索分词;免费版每个月 10k 的搜索限制
- fulltext-sarch: 基于 flexsearch 方案,纯本地搜索。缺点是增加打包产物体积,可能会影响首屏
- thirdparty-search: 第三方搜索,点击后跳转引擎搜索页面,没啥用
# Algolia 使用
# 流程
- 申请注册:https://docsearch.algolia.com/apply/ (opens new window),可能要等一段时间。我这里是申请了多次,前面几次都没回复,最后一次申请隔天就回复了。
- 申请成功后,可以按 vuepress 的文案配置 Algolia 搜索 (opens new window)
具体值可以看邮件或者平台,本博客的配置如下
themeConfig: {
algolia: {
apiKey: '9697875d39432384a444b570563811be',
indexName: 'gahing',
appId: '0QTGLFRP72',
},
}
1
2
3
4
5
6
7
2
3
4
5
6
7
PS:此配置对外暴露无风险
- 之后在搜索框搜索即可
# 注意事项
如果开始搜索后发现数据始终返回空,那么此时就需要怀疑下是不是爬虫配置有问题了。
首先进到爬虫配置页 (opens new window) ,点击相应项目,观察 Overview
如果 Monitoring(爬取的页面) 有数据而 Indices (页面记录)没有数据,则说明爬虫配置有问题,比如下图
点击 Editor 面板进入爬虫配置。
这里 pathsToMatch 默认是 https://域名/docs/**,但由于我的页面地不是这个路径,故会提取错误。
对于我的项目,我改成了 https://域名/**
,然后点击右侧的 Run Test
进行测试,预期应该看到 records 输出,没问题后 save ,并回到 Overview 面板执行 Restart crawling
等待一段时间后会发现 Records 有数据了,此时搜索可以正常使用
# 后续优化方案
优化 fulltext-sarch 本地搜索方式,需要将资源进行异步加载
# 参考资料
编辑 (opens new window)
上次更新: 2023/08/23, 09:32:05