索引范围控制

Pagefind 默认从页面的 <body> 开始分析内容。文档站通常不希望导航、侧边栏、页脚、弹窗和广告进入搜索结果,因此需要明确控制索引范围。

使用 data-pagefind-body

把主要内容区域标记为 data-pagefind-body

html
<main data-pagefind-body>
  <h1>Pagefind 教程</h1>
  <p>这里是应该进入搜索索引的正文。</p>
</main>

<aside>
  这里是侧边栏,不进入正文索引。
</aside>

一旦站点中出现 data-pagefind-body,Pagefind 会只索引带有该属性的页面内容。没有这个属性的页面不会进入索引,因此首页、专题页、工具页如果也需要搜索,需要同样加上该属性。

忽略局部内容

如果正文里有一小块不希望被索引,可以使用 data-pagefind-ignore

html
<main data-pagefind-body>
  <h1>部署指南</h1>
  <p>这段正文会被索引。</p>

  <div data-pagefind-ignore>
    这里是重复的推荐阅读,不进入搜索索引。
  </div>
</main>

默认忽略正文索引,但仍可能处理其中的元数据。要完全排除一个元素及其子元素,可写成:

html
<div data-pagefind-ignore="all">
  这里不会被 Pagefind 用于正文、标题、元数据或筛选。
</div>

使用 root selector

CLI 的 --root-selector 可以限制 Pagefind 处理页面的根节点:

bash
pagefind --site dist --root-selector main

它会让 Pagefind 只处理 main 元素以内的内容。需要注意:root selector 之外的元数据和筛选也不会被检测到。大多数项目优先使用 data-pagefind-body,只有在模板非常统一时再使用 --root-selector

保留特殊字符

默认索引会去掉多数标点。技术文档如果需要搜索 <head>$PATHC++ 这类内容,可以配置 include_characters

yaml
include_characters: "<>+$"

这类配置推荐写进 pagefind.yml,避免命令行转义在不同 shell 中表现不一致。