路径筛选允许你通过定义包含与排除模式,控制对哪些文件或 URL 建立索引。可用它将索引范围限制为特定内容,或跳过你不希望可搜索的文件。
你可以在创建或编辑 AI Search 实例时配置路径筛选器。在仪表板中打开 Path Filters(路径筛选器),并添加包含或排除规则。你也可以随时从实例的 Settings(设置) 页面更新路径筛选器。
使用 REST API 时,在配置的 source_params 中指定 include_items 与 exclude_items:
| 参数 | 类型 | 限制 | 描述 |
|---|---|---|---|
include_items |
string[] |
最多 10 个模式 | 仅索引至少匹配其中一个模式的项 |
exclude_items |
string[] |
最多 10 个模式 | 跳过匹配任一模式的项 |
两个参数均为可选。若均未指定,则索引数据源中的所有项。
排除规则优先于包含规则。筛选按以下顺序应用:
- 排除检查:如果项匹配任一排除模式,则跳过。
- 包含检查:如果定义了包含模式且项不匹配其中任何一个,则跳过。
- 索引:该项继续进入索引流程。
| 场景 | 行为 |
|---|---|
| 未定义规则 | 索引所有项 |
仅定义 exclude_items |
索引除匹配排除模式之外的所有项 |
仅定义 include_items |
仅索引至少匹配一个包含模式的项 |
| 两者都定义 | 先检查排除模式,然后剩余项必须匹配某个包含模式 |
模式使用基于 micromatch ↗ 的区分大小写通配符语法:
| 通配符 | 含义 |
|---|---|
* |
匹配除路径分隔符(/)外的任意字符 |
** |
匹配包括路径分隔符(/)在内的任意字符 |
模式可以包含:
- 字母、数字与下划线(
a-z、A-Z、0-9、_) - 连字符(
-)与点(.) - 路径分隔符(
/) - URL 字符(
?、:、=、&、%) - 通配符(
*、**)
被筛选规则跳过的项会记录在作业日志中,并附带原因:
- 匹配排除:
Skipped by rule: {pattern} - 未匹配包含:
Skipped by Include Rules
你可以在 AI Search 实例的 Jobs 选项卡中查看这些记录,以验证筛选器是否按预期工作。
- 大小写敏感性: 模式匹配区分大小写。
/Blog/*不会匹配/blog/post.html。 - 完整路径匹配: 模式匹配整个路径或 URL。部分匹配请在开头使用
**。例如,docs/*匹配docs/file.pdf但不匹配site/docs/file.pdf,而**/docs/*两者都匹配。 - 单个
*不会跨目录: 使用**跨路径分隔符匹配。例如,docs/*匹配docs/file.pdf但不匹配docs/sub/file.pdf,而docs/**两者都匹配。 - 尾部斜杠有意义: URL 按原样匹配,不做规范化。
/blog/不会匹配/blog。
| 用例 | 模式 | 已索引 | 已跳过 |
|---|---|---|---|
| 仅索引 docs 中的 PDF | 包含:/docs/**/*.pdf |
/docs/guide.pdf、/docs/api/ref.pdf |
/docs/guide.md、/images/logo.png |
| 排除临时与备份文件 | 排除:**/*.tmp、**/*.bak |
/docs/guide.md |
/data/cache.tmp、/old.bak |
| 排除临时与备份文件夹 | 排除:/temp/**、/backup/** |
/docs/guide.md |
/temp/file.txt、/backup/data.json |
| 索引 docs 但排除草稿 | 包含:/docs/**,排除:/docs/drafts/** |
/docs/guide.md |
/docs/drafts/wip.md |
| 将实例限定到单个租户 | 包含:/customers/acme/** |
/customers/acme/report.pdf |
/customers/globex/report.pdf |
要为每个租户提供由单个共享存储桶支持的隔离实例,请参阅多租户。
| 用例 | 模式 | 已索引 | 已跳过 |
|---|---|---|---|
| 仅索引博客页面 | 包含:**/blog/** |
example.com/blog/post、example.com/en/blog/article |
example.com/about |
| 排除管理页面 | 排除:**/admin/** |
example.com/blog/post |
example.com/admin/settings |
| 排除登录页面 | 排除:**/login* |
example.com/blog/post |
example.com/login、example.com/auth/login-form |
| 索引 docs 但排除草稿 | 包含:**/docs/**,排除:**/docs/drafts/** |
example.com/docs/guide |
example.com/docs/drafts/wip |
使用 API 时,在 source_params 中指定模式:
{
"source_params": {
"include_items": ["<PATTERN_1>", "<PATTERN_2>"],
"exclude_items": ["<PATTERN_1>", "<PATTERN_2>"]
}
}