搜索

默认主题支持通过 docsearch 接入 Algolia DocSearch,也支持通过 search 接入自定义搜索组件,包括 @sveltepress/meilisearch

Algolia DocSearch

defaultTheme 传入 docsearch 配置对象,即可在导航栏启用 Algolia DocSearch

必填字段为 appIdapiKeyindexName,同时也支持所有其他 DocSearch 选项

vite.config.(js|ts)
import {  } from '@sveltepress/theme-default'
import {  } from '@sveltepress/vite'
import {  } from 'vite'

export default ({
  : [
    ({
      : ({
        : {
          : 'YOUR_APP_ID',
          : 'YOUR_SEARCH_API_KEY',
          : 'YOUR_INDEX_NAME',
        },
      }),
    }),
  ],
})
ts
申请 DocSearch

DocSearch 对开源文档站点免费,可前往 docsearch.algolia.com 申请。

Meilisearch

@sveltepress/meilisearch 是官方支持的 Meilisearch 搜索组件。先安装依赖:

npm install --save @sveltepress/meilisearch
sh

创建一个包装组件,并传入 Meilisearch 连接配置:

src/lib/MeilisearchSearch.svelte
<script lang="ts">
  import  from '@sveltepress/meilisearch/Search.svelte'
</script>

<
  ="https://search.example.com"
  ="YOUR_SEARCH_ONLY_KEY"
  ="docs"
/>
svelte

然后把包装组件路径传给默认主题的自定义搜索入口:

vite.config.(js|ts)
import {  } from '@sveltepress/theme-default'

({
  : '/src/lib/MeilisearchSearch.svelte',
})
ts

该组件只查询已经建立的 Meilisearch 索引,不负责创建索引。每条记录应提供 idtitlecontent,以及 urlpath。浏览器端必须使用仅有搜索权限的 API Key。

已知生产构建缺陷

自定义搜索 API 和 @sveltepress/meilisearch 组件均受支持,上述源码路径配置在开发环境中可以工作。但当前默认主题运行时会把 .svelte 路径留给浏览器动态导入,因此静态生产构建不会打包这个包装组件;直接传入组件对象也会在主题配置序列化时丢失。这是默认主题的生产构建缺陷,并不表示不支持 M Search。在运行时接入修复前,请务必验证实际生产部署。

如需接入其他搜索服务,也可以使用同一个 search 入口提供自己的 Svelte 包装组件。同时配置 searchdocsearch 时,优先使用 search