索引范围控制
Pagefind 默认从页面的 <body> 开始分析内容。文档站通常不希望导航、侧边栏、页脚、弹窗和广告进入搜索结果,因此需要明确控制索引范围。
使用 data-pagefind-body
把主要内容区域标记为 data-pagefind-body:
<main data-pagefind-body>
<h1>Pagefind 教程</h1>
<p>这里是应该进入搜索索引的正文。</p>
</main>
<aside>
这里是侧边栏,不进入正文索引。
</aside>
一旦站点中出现 data-pagefind-body,Pagefind 会只索引带有该属性的页面内容。没有这个属性的页面不会进入索引,因此首页、专题页、工具页如果也需要搜索,需要同样加上该属性。
忽略局部内容
如果正文里有一小块不希望被索引,可以使用 data-pagefind-ignore:
<main data-pagefind-body>
<h1>部署指南</h1>
<p>这段正文会被索引。</p>
<div data-pagefind-ignore>
这里是重复的推荐阅读,不进入搜索索引。
</div>
</main>
默认忽略正文索引,但仍可能处理其中的元数据。要完全排除一个元素及其子元素,可写成:
<div data-pagefind-ignore="all">
这里不会被 Pagefind 用于正文、标题、元数据或筛选。
</div>
使用 root selector
CLI 的 --root-selector 可以限制 Pagefind 处理页面的根节点:
pagefind --site dist --root-selector main
它会让 Pagefind 只处理 main 元素以内的内容。需要注意:root selector 之外的元数据和筛选也不会被检测到。大多数项目优先使用 data-pagefind-body,只有在模板非常统一时再使用 --root-selector。
保留特殊字符
默认索引会去掉多数标点。技术文档如果需要搜索 <head>、$PATH、C++ 这类内容,可以配置 include_characters:
include_characters: "<>+$"
这类配置推荐写进 pagefind.yml,避免命令行转义在不同 shell 中表现不一致。
相关内容
- Pagefind 是什么 介绍 Pagefind 的定位、工作流程、适用场景与限制,帮助你判断它是否适合文档站、博客和静态内容网站。
- 安装与运行 讲解如何通过 npx、pnpm、Python 包或二进制文件运行 Pagefind,并把它接入静态站点构建流程。
- 搜索 UI 介绍 Pagefind Component UI 的引入方式、弹窗搜索、搜索框组件和样式定制思路,适合快速给静态站点增加搜索入口。
- JavaScript API 讲解如何通过 /_pagefind/pagefind.js 动态导入搜索 API,执行查询、按需加载结果、渲染标题、摘要和 URL。
- 元数据与筛选 介绍 data-pagefind-meta、data-pagefind-filter、默认元数据、属性捕获和筛选查询设计,让搜索结果更有结构。
- 中文搜索配置 讲解 Pagefind 在中文站点中的语言识别、extended 版本、force language、中文分词特点和技术文档搜索建议。