全站搜索
默认情况下,Starlight 站点提供了基于 Pagefind 的全文搜索,它是一个为静态站点的快速且低带宽的搜索工具。
启用搜索不需要配置。构建并部署你的站点,然后使用网站顶部的搜索栏来查找内容。
从搜索结果中隐藏内容
排除一个页面
要从搜索结果中排除一个页面,需要将 pagefind: false
添加到页面的 frontmatter 中:
排除页面中的一部分
Pagefind 会忽略带有 data-pagefind-ignore
属性的元素内的内容。
在下面的示例中,第一个段落将显示在搜索结果中,但 <div>
的内容不会:
其他搜索供应商
Algolia DocSearch
如果你加入了 Algolia 的 DocSearch 计划并且想要用它来替代 Pagefind,你可以使用官方的 Starlight DocSearch 插件。
-
安装
@astrojs/starlight-docsearch
: -
把 DocSearch 加到
astro.config.mjs
里你的 Starlightplugins
配置中,并传入你的 AlgoliaappId
、apiKey
和indexName
:
像这样更新配置后,你站点上的搜索栏将会打开一个 Algolia 的模态框而不是默认的搜索模态框。
DocSearch 配置
Starlight DocSearch 插件还支持通过下面这些附加的选项来自定义 DocSearch 组件:
maxResultsPerGroup
:限制每个搜索组所显示的结果数。默认值为5
。disableUserPersonalization
:阻止 DocSearch 将用户的最近搜索和收藏夹保存到本地存储。默认值为false
。insights
:启用 Algolia Insights 插件并将搜索事件发送到你的 DocSearch 索引。默认值为false
。searchParameters
:一个可用于自定义 Algolia 搜索参数的对象。
翻译 DocSearch UI
DocSearch 默认只提供了英语 UI 文本。 使用 Starlight 内置的国际化系统来添加你的语言的模态框 UI 的翻译。
-
在
src/content/config.ts
中给 Starlight 的i18n
内容集合定义添加 DocSearch schema: -
在
src/content/i18n/
里的 JSON 文件中添加翻译。这些是 DocSearch 使用的英文默认文本: