Skip to content
Go back

搜索功能配置指南

配置 astro-minimax 的搜索功能:Pagefind 静态全文搜索(默认)和 Algolia DocSearch 云搜索的完整配置指南。

astro-minimax 内置两种搜索方案,覆盖不同的使用场景。Pagefind 是默认的静态搜索引擎,零配置即可使用;Algolia DocSearch 提供云端搜索,适合需要毫秒级响应和搜索分析的站点。

本文介绍两种搜索方案的特点、配置方法,以及与 AI 搜索系统的关系。

两种搜索方案对比

特性PagefindAlgolia DocSearch
搜索类型静态全文搜索云端搜索
索引生成构建时自动生成Algolia 云端维护
外部服务不需要需要 Algolia 账号
中文分词支持支持
响应速度毫秒级(本地)毫秒级(云端)
搜索分析支持
配置难度零配置需申请 + 配置
索引存储位置dist/pagefind/Algolia 服务器

Pagefind(默认)

Pagefind 是 astro-minimax 的默认搜索引擎。它是一个完全静态的搜索方案,构建时自动为所有博客文章生成索引文件,用户在浏览器端完成搜索,不需要任何后端服务。

核心特点

使用方式

确保 config.tsfeatures.search 未被禁用即可:

features: {
  search: true,  // 默认开启,可省略
},
js

构建后,Header 中的搜索按钮会自动加载 Pagefind 搜索界面。

Algolia DocSearch

如果你的站点需要更强的搜索能力(比如搜索分析、搜索建议、自动补全),可以切换到 Algolia DocSearch。

前提条件

使用 DocSearch 需要先获取 Algolia 凭证:

  1. 开源文档站点可以免费申请 DocSearch
  2. 其他站点可以自建 Algolia 索引

配置方法

src/config.tsSITE 对象中添加 search 配置:

export const SITE = {
  // ...其他配置

  search: {
    provider: 'docsearch',
    docsearch: {
      appId: 'YOUR_APP_ID',
      apiKey: 'YOUR_SEARCH_API_KEY',
      indexName: 'YOUR_INDEX_NAME',
      placeholder: '搜索文档...',
    },
  },
};
typescript

DocSearch 特性

配置完成后,Header 中的 Pagefind 搜索入口会被 DocSearch 组件替换。DocSearch 组件位于 packages/core/src/components/search/DocSearch.astro,会自动加载 Algolia 的 CSS 和 JS 资源,并根据站点的明暗主题自动适配配色。

切换搜索方案

切换搜索方案只需修改 config.ts 中的配置:

// 使用 Pagefind(默认,可省略整个 search 配置)
search: {
  provider: 'pagefind',
}

// 或者使用 DocSearch
search: {
  provider: 'docsearch',
  docsearch: {
    appId: 'YOUR_APP_ID',
    apiKey: 'YOUR_SEARCH_API_KEY',
    indexName: 'YOUR_INDEX_NAME',
    placeholder: '搜索文档...',
  },
}
typescript

不配置 search 字段时,默认使用 Pagefind。

搜索配置参考

选项说明
search.provider搜索方案:'pagefind'(默认)或 'docsearch'
search.docsearch.appIdAlgolia Application ID
search.docsearch.apiKeyAlgolia Search-Only API Key
search.docsearch.indexNameAlgolia 索引名称
search.docsearch.placeholder搜索框占位文本

完整的类型定义见 packages/core/src/types.ts 中的 SearchConfigDocSearchConfig 接口。

AI 搜索系统(进阶)

除了面向用户的 UI 搜索(Pagefind / DocSearch),astro-minimax 的 AI 聊天功能还内置了一套独立的搜索系统,用于 RAG(Retrieval-Augmented Generation)检索增强。这套系统位于 packages/ai/src/search/,和 UI 搜索是两套独立的机制。

混合检索架构

AI 搜索采用混合检索(Hybrid Search)策略,结合了两种检索方式:

两种检索结果通过 Reciprocal Rank Fusion (RRF) 算法融合,取长补短:

graph LR
    Q[用户查询] --> K[关键词检索
TF-IDF/BM25] Q --> V[向量检索] K --> RRF[RRF 融合] V --> RRF RRF --> R[排序后的结果]

会话缓存

搜索结果会被缓存在内存中,缓存有效期为 10 分钟(600 秒)。同一会话内的连续对话可以复用之前的搜索上下文,避免重复检索,提升响应速度。

缓存通过 x-session-id 请求头标识,每个会话最多缓存 400 条记录。

与 UI 搜索的区别

维度UI 搜索(Pagefind/DocSearch)AI 搜索(RAG)
用途用户主动搜索文章AI 聊天的知识检索
触发方式点击搜索框 / 快捷键发送聊天消息
索引位置静态文件 / Algolia 云端运行时内存
检索粒度文章级别段落级别(Chunk)
配置位置SITE.search自动加载,无需配置

常见问题

Pagefind 搜索结果为空?

确保运行过 pnpm run build。Pagefind 的索引在构建时生成,开发模式下搜索功能可能不完整。

DocSearch 样式和主题不一致?

DocSearch 组件已经适配了 astro-minimax 的明暗主题。如果仍然有样式问题,检查是否有自定义 CSS 覆盖了 DocSearch 的 CSS 变量。

可以同时使用两种搜索吗?

不可以。search.provider 只能设为 'pagefind''docsearch',二选一。

AI 搜索可以替代 UI 搜索吗?

两者定位不同。UI 搜索适合快速查找特定文章,AI 搜索适合对话式问答。建议保持 UI 搜索开启,配合 AI 聊天获得更好的体验。

下一步



上一篇
如何配置 astro-minimax 主题
下一篇
安全加固指南

评论区

文明评论,共建和谐社区