パスフィルタリングでは、包含パターンと除外パターンを定義し、インデックスするファイルや URL を制御できます。特定のコンテンツだけをインデックスしたり、検索対象にしたくないファイルをスキップしたりするときに使います。
パスフィルタリングは、Web サイト と R2 のどちらのデータソースでも使えます。
AI Search インスタンスの作成時または編集時に、パスフィルターを設定できます。ダッシュボードでは Path Filters を開き、包含ルールまたは除外ルールを追加します。インスタンスの Settings ページから、いつでもパスフィルターを更新できます。
REST API を使う場合は、設定の source_params に include_items と exclude_items を指定します。
| パラメーター | 型 | 上限 | 説明 |
|---|---|---|---|
include_items |
string[] |
最大 10 パターン | これらのパターンの少なくとも 1 つに一致するアイテムだけをインデックスします |
exclude_items |
string[] |
最大 10 パターン | これらのパターンのいずれかに一致するアイテムをスキップします |
どちらのパラメーターも任意です。どちらも指定しない場合、データソースの全アイテムがインデックスされます。
除外ルールは包含ルールより優先されます。フィルタリングは次の順で適用されます。
- 除外チェック: アイテムがいずれかの除外パターンに一致する場合、スキップされます。
- 包含チェック: 包含パターンが定義されていて、アイテムがどれにも一致しない場合、スキップされます。
- インデックス: アイテムはインデックスへ進みます。
| シナリオ | 動作 |
|---|---|
| ルールなし | すべてのアイテムがインデックスされます |
exclude_items のみ |
除外パターンに一致するアイテム以外がインデックスされます |
include_items のみ |
包含パターンの少なくとも 1 つに一致するアイテムだけがインデックスされます |
| 両方を定義 | 先に除外パターンを確認し、残ったアイテムは包含パターンに一致する必要があります |
パターンは、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 だけをインデックスする | Include: /docs/**/*.pdf |
/docs/guide.pdf、/docs/api/ref.pdf |
/docs/guide.md、/images/logo.png |
| 一時ファイルとバックアップファイルを除外する | Exclude: **/*.tmp、**/*.bak |
/docs/guide.md |
/data/cache.tmp、/old.bak |
| 一時フォルダーとバックアップフォルダーを除外する | Exclude: /temp/**、/backup/** |
/docs/guide.md |
/temp/file.txt、/backup/data.json |
| docs をインデックスし、下書きは除外する | Include: /docs/**、Exclude: /docs/drafts/** |
/docs/guide.md |
/docs/drafts/wip.md |
| インスタンスを 1 テナントに限定する | Include: /customers/acme/** |
/customers/acme/report.pdf |
/customers/globex/report.pdf |
共有バケットを使い、テナントごとに分離したインスタンスを用意する方法は、マルチテナンシー を参照してください。
| ユースケース | パターン | インデックス対象 | スキップ |
|---|---|---|---|
| ブログページだけをインデックスする | Include: **/blog/** |
example.com/blog/post、example.com/en/blog/article |
example.com/about |
| 管理ページを除外する | Exclude: **/admin/** |
example.com/blog/post |
example.com/admin/settings |
| ログインページを除外する | Exclude: **/login* |
example.com/blog/post |
example.com/login、example.com/auth/login-form |
| docs をインデックスし、下書きは除外する | Include: **/docs/**、Exclude: **/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>"]
}
}