博客使用指南-搜索 - Shiina's Blog

博客使用指南-搜索

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 文件夹,里面是模拟服务器的内容

页面发起的请求如下:

查询参数参数类型备注
keywordsstring查询的关键字
limitnumber查询的数量
offsetnumber偏移量

举例:

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/

下一步?

个人信息
avatar
Shiinafan
文章
10
标签
8
归档
3
导航