algolia使用配置教程-为SSG静态站增加algolia搜索功能
要构建SSG静态站点时,一般为了方便增加algolia搜索框,但这里algolia配置使用时用很多的坑,折腾了我好几天,网上没有一个可用的教程。
自己弄了几天,终于搞明白里面的道道了,现在分享出来给大家,避免踩坑。
前面注册的就不用了。
比如:用的docusaurus、vitepress构建SSG静态站点,安装algolia依赖的,都会有algolia的设置。此处不讲这些简单的。
先看效果图:
algolia设置步骤
- docusaurus、vitepress设置appid、key、抓取配置等
- algolia新建app
- 创建爬虫
- 设置索引
实操说明
下面以我自构建的一个gulp文档静态站点:https://gulpjs.uihtm.com 为演示,一步步怎么设置完成的。
静态站配置algolia密钥、索引名、appid
本站点是使用docusaurus来构建静态站点的,在docusaurus.config.js
配置文件里有一个设置algolia的appId
、apiKey
、indexName
algolia: {
appId: 'XQC8CUNYC9',
apiKey: '1fe23b551c6d578e296aeb91ef858c2e',
indexName: 'deploy-gulpjs',
contextualSearch: true,
searchParameters: {
facetFilters: ['language:zh-CN']
}
}
这里的appId
、apiKey
、indexName
对应的是algolia后台:https://dashboard.algolia.com/ 面板里的。
先在后台创建应用才能得到appid、apikey,
创建应用
选择地域区,随便选一个
创建完点击应用就可以对相应应用设置
apikey在这里:Search API Key
algolia 索引index创建
点击这里的serach就会到index页面,
默认索引里的,records
,record size
是空的0,点击event data
进去,再点Crawler
爬取设置
设置爬虫
创建爬虫,爬虫可以创建多个的,其实只需要一个就够了。到时验证域名,点击爬虫名称,进入爬取设置
点击Resume crawling
会自动爬取域名里的网址,爬取前可以设置,爬取的开始域名,最有url数和爬取周期
这里就是爬取完的显示,这是有爬取完成的url数量,url里的记录数,
注意这里的Indices,
- 这里有个名称为:
deploy-gulpjs
,的索引名。是填到静态站点配置里的, - 索引是可以有多个
- 如果没设置edtor,爬取出来的索引是随机名,后面可以重命名
- 注意索引有没有records记录
在爬取过程,有一个deploy-gulpjs.tmp的名称,在爬完后自动消失。
自定义爬虫设置
在这里点击editor
,可以设置测试爬取内容等配置。
可以编辑里面的json参数设置爬取。代码里的indexName: "deploy-gulpjs"
,就是我设置爬取后生成的索引名称,还有一点是站点语言,一般
new Crawler({
appId: "xxxxxx",
indexPrefix: "",
rateLimit: 8,
maxUrls: null,
schedule: "on the 12 day of the month",
startUrls: ["https://gulpjs.uihtm.com"],
renderJavaScript: false,
sitemaps: ["https://gulpjs.uihtm.com/sitemap.xml"],
ignoreCanonicalTo: true,
discoveryPatterns: ["https://gulpjs.uihtm.com/**"],
actions: [
{
indexName: "deploy-gulpjs",
pathsToMatch: ["https://gulpjs.uihtm.com/**"],
recordExtractor: ({ $, helpers }) => {
const lvl0 =
$(
".menu__link.menu__link--sublist.menu__link--active, .navbar__item.navbar__link--active",
)
.last()
.text() || "Documentation";
const records = helpers.docsearch({
recordProps: {
lvl0: {
selectors: "",
defaultValue: "gulpjs",
},
lvl1: ["header h1", "article h1"],
lvl2: "article h2",
lvl3: "article h3",
lvl4: "article h4",
lvl5: "article h5, article td:first-child",
lvl6: "article h6",
content: "article p, article li, article td:last-child",
},
aggregateContent: true,
recordVersion: "v3",
});
// 设置中文
records.forEach((record) => {
record.lang = "zh-CN";
});
return records;
},
},
],
safetyChecks: { beforeIndexPublishing: { maxLostRecordsPercentage: 30 } },
initialIndexSettings: {
deployGulpjs: {
attributesForFaceting: [
"type",
"lang",
"language",
"version",
"docusaurus_tag",
],
attributesToRetrieve: [
"hierarchy",
"content",
"anchor",
"url",
"url_without_anchor",
"type",
],
attributesToHighlight: ["hierarchy", "content"],
attributesToSnippet: ["content:10"],
camelCaseAttributes: ["hierarchy", "content"],
searchableAttributes: [
"unordered(hierarchy.lvl0)",
"unordered(hierarchy.lvl1)",
"unordered(hierarchy.lvl2)",
"unordered(hierarchy.lvl3)",
"unordered(hierarchy.lvl4)",
"unordered(hierarchy.lvl5)",
"unordered(hierarchy.lvl6)",
"content",
],
distinct: true,
attributeForDistinct: "url",
customRanking: [
"desc(weight.pageRank)",
"desc(weight.level)",
"asc(weight.position)",
],
ranking: [
"words",
"filters",
"typo",
"attribute",
"proximity",
"exact",
"custom",
],
highlightPreTag: '<span class="algolia-docsearch-suggestion--highlight">',
highlightPostTag: "</span>",
minWordSizefor1Typo: 3,
minWordSizefor2Typos: 7,
allowTyposOnNumericTokens: false,
minProximity: 1,
ignorePlurals: true,
advancedSyntax: true,
attributeCriteriaComputedByMinProximity: true,
removeWordsIfNoResults: "allOptional",
},
},
apiKey: "xxxxxxx",
});
看你的静态站点html是设置什么语言,lang="zh-CN"
,那对应要json参数设置爬取
// 设置中文
records.forEach((record) => {
record.lang = "zh-CN";
});
重点,索引设置
索引设置里的Searchable attributes
、Facets
、Language
最后有这样的数据出来就大功告成了。
algolia使用配置教程-为SSG静态站增加algolia搜索功能的更多相关文章
- PHPCMS快速建站系列之搜索功能
默认模板的搜索功能代码 <div class="bd"> <form action="{APP_PATH}index.php" method= ...
- 详细的图文介绍如何利用XAMPP本地建站的环境配置教程
原文:详细的图文介绍如何利用XAMPP本地建站的环境配置教程 WordPress 是一个简便快捷,用途广,人气旺的一个开源的博客建站程序.很有很多等您去发现. 简便快捷:在性能上易于操作.易于浏览: ...
- Termux 高级终端安装使用配置教程
Termux 高级终端安装使用配置教程,这篇文章拖了有小半年.因为网上相关的文章相对来说还是比较少的,恰好今天又刷了机,所以就特意来总结一下,希望本文可以帮助到其他的小伙伴.发挥Android平台更大 ...
- win7安装iis及web配置教程
下面iis教程只适用win7或win8系统的服务器配置,如果您使用的是xp系统或win2003系统请看:xp或2003安装iis及web配置教程 .注:新手如果嫌iis安装配置麻烦建议下载PageAd ...
- 转自《https安全链接的配置教程:startSSl免费证书申请与nginx的https支持配置》
一.什么是 SSL 证书,什么是 HTTPS 网站? SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secu ...
- jdk eclipse SDK下载安装及配置教程
原文地址https://blog.csdn.net/dr_neo/article/details/49870587 最新鲜最详细的Android SDK下载安装及配置教程 最近Neo突发神经,想要将学 ...
- 2018年Unity结合Android SDK下载安装及配置教程
原文:2018年Unity结合Android SDK下载安装及配置教程 首先声明: Unity版本2017.1f3 最近试着在Unity中利用网易做AR开发时,发布项目文件需要发布到An ...
- 使用Docsify做文档网站的详细配置教程
使用Docsify做文档网站的详细配置教程 作者:xhemj 没错,它叫Docsify. xhemj的文档中心就是用这个写的 开源地址:https://github.com/docsifyjs/doc ...
- openvpn配置教程
openvpn配置教程 本文是为解决本地服器能从外网访问web页,从新改写(临摹) 烂泥:ubuntu 14.04搭建OpenVPN服务器这篇文章 腾讯云为服务器,本地服务器为客户端 一.服务器安装o ...
- VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程
VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程 在VMware Workstation虚拟机下面,Linux虚机要上网,一般是桥接模式,但我自己的电脑上网的环境 ...
随机推荐
- 【Matlab】判断点和多面体位置关系的两种方法实现
分别是向量判别法(算法来自他人论文).体积判别法(code 是我从网上找的). 方法一: 向量判别法 方法来自一会议论文:<判断点与多面体空间位置关系的一个新算法_石露>2008年,知网. ...
- kafka开启kerberos认证详细步骤
一.kerberos安装部署 kerberos的基本原理不做过多介绍了,可自行查阅:本文主要介绍kerberos的安装及使用;使用到的软件版本:系统:Red Hat Enterprise Linux ...
- mysql order by 中文排序
前言 在 MySQL 中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的. 这种情况在 MySQL 的很多版本中都存在. 如果这个问题不解决,那么 ...
- php 过滤掉emoji表情
<?php function filter_emoji($str) { $str = preg_replace_callback( //执行一个正则表达式搜索并且使用一个回调进行替换 '/./u ...
- mysql 导出数据的命令
博客地址:https://www.cnblogs.com/zylyehuo/ # 1.数据库备份与恢复 # mysqldump命令用于备份数据库数据 [root@localhost ~]# mysql ...
- 几款ZooKeeper可视化工具,最后一个美炸了~
首发于公众号:BiggerBoy 欢迎关注,查看更多技术文章 ZooKeeper是我们工作中常用一个开源的分布式协调服务,提供分布式数据一致性解决方案,分布式应用程序可以实现数据发布订阅.负载均衡.命 ...
- 【Linux】5.7 Shell test命令
Shell test 命令 Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 1. 数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 - ...
- 【Linux】2.1 Linux入门
Linux入门 1. Linux介绍 Linux 是一款免费,开源,安全,高效,稳定,处理高斌发很强悍的操作系统 Linux创始人--linux(林纳斯) Linux主要发行版本 2. Unix与Li ...
- 【Web】支持纯静态的Layuimini版本
支持纯静态的Layuimini版本 本人做了点小小的改动,在来的基础上添加了对静态的支持. 零.起因 要做个项目,但是用的是JSP,想着用Layui,然后去找模板,发现这个Layuimini.但是这个 ...
- Redis 应用场景之短信验证码
应用场景 以 OSChina 账号注册 为例...讲错了请留言批评指正... 逻辑场景 用户操作: 用户输入手机号, 然后点击获取验证码. 前端逻辑: ajax 发起请求, 参数带上手机号. 后端逻辑 ...