博客使用指南-搜索
2023 年 2 月 2 日 - 00:00:00 发布
1.2K 字
5分钟
本作品采用
CC BY-NC-SA 4.0
进行许可。
本文距离首次发布已经过去了 232
天,请注意文章的时效性!
搜索功能
以下配置项均来自 blog.config.ts
active
激活搜索功能的标识,默认为 false
mode
使用静态搜索还是服务器搜索
- 静态搜索:博客构建时生成一个 json 文章索引,并采用内置的匹配规则匹配文章,适用于静态网站和服务端渲染网站
- 服务器搜索,用户自行设置接口,按给定的参数制作接口,适用于对搜索有特殊要求的开发者
static
将采用静态文件搜索,会将完整的搜索索引发送给客户端
默认生成于生产环境目录下,构建输出时会在控制台打印出路径和文件大小
server
在服务端进行搜索,由用户参考示例代码自行编写接口
搜索采用滚动到底部进行请求的处理
项目内有一个 json-server
文件夹,里面是模拟服务器的内容
页面发起的请求如下:
查询参数 | 参数类型 | 备注 |
---|---|---|
keywords | string | 查询的关键字 |
limit | number | 查询的数量 |
offset | number | 偏移量 |
举例:
https://query.test.com?keywords=te&limit=3&offset=2
代表查询的关键字是 te
,返回结果列表的第 2 ~ 5
条
返回要求:
{
code: 200, // 状态码
msg: 'success', // 状态信息
end: true, // 是否没有更多数据了
data: [
{
title: 'test', // 文章标题,会根据这个跳转 posts 内的文章
hl: 'te', // 可选,高亮部分,会被放到文章内容匹配的开头
content: 'st' // 文章后续内容,会被接入到高亮文字后面
}
]
}
注意
被构建出来的搜索索引是一个对象,由 markdown 文件名
-> 文章内容
确定键值对
如果觉得这种索引质量不高,你也可以自己编写 astro 集成来制作索引文件
具体可以参考 src/_intergration/BuildSearchIndex.ts
的思路进行处理
astro 集成 api:https://docs.astro.build/zh-cn/reference/integrations-reference/
下一步?
- 阅读文章编写指引:文章编写文档
个人信息
Shiinafan
文章
10
标签
8
归档
3