サイト検索
zudo-docでの検索の仕組みと設定方法。
検索の仕組み
zudo-docは全文サイト検索にMiniSearchを使用しています。コンテンツファイル(タイトル、説明、本文)から検索インデックスが生成され、単一のJSONファイルとして配信されます。ブラウザがこのインデックスを読み込み、すべての検索をクライアントサイドで実行します — サーバーや外部サービスは不要です。
検索の使い方
検索ダイアログを開くには:
- キーボードショートカット:
Ctrl+K(Windows/Linux)またはCmd+K(macOS) - 検索ボタン:ヘッダーの検索アイコンをクリック
クエリを入力すると結果が即座に表示されます。結果をクリックするとそのページに移動します。
すべての環境で動作
検索はすべての環境で動作します:
- 開発モード(
pnpm dev):検索インデックスはViteミドルウェア経由でオンザフライで生成 - 本番ビルド(
pnpm build):インデックスは静的サイトとともにsearch-index.jsonに出力 - Electron:同じインデックスファイルを読み込み — 特別な処理は不要
💡 Tip
検索をテストするためにビルドする必要はありません。pnpm devですぐに動作します。
ページを検索から除外する
フロントマターにsearch_exclude: true、draft: true、またはunlisted: trueが設定されたページは、検索インデックスから自動的に除外されます。
ページを明示的に除外するには、フロントマターにsearch_exclude: trueを追加します:
---
title: My Internal Page
search_exclude: true
---
💡 Tip
これは変更履歴、インポートされたコンテンツ(例:CLAUDE.md)、検索結果を煩雑にする内部専用ページなどに便利です。
検索機能
MiniSearchは以下を提供します:
- ファジーマッチング:タイポを許容(最大20%の文字差異)
- プレフィックス検索:入力中に結果を検出(例:「conf」は「Configuration」にマッチ)
- フィールドブースティング:タイトルの一致は本文の3倍、説明は2倍にランク付け
- 即時結果:フルインデックスが一度読み込まれ、メモリ内でクエリを実行
サーバーサイド検索(Search Worker)
大規模なドキュメントベースやプログラムによるAPIアクセスのために、zudo-docはオプションのSearch Workerを提供しています。これはMiniSearchをサーバーサイドで実行するCloudflare Workerです。
Search Workerを使うべき場合
組み込みのクライアントサイド検索は小〜中規模のドキュメントサイトで十分に動作します。Search Workerは以下の場合に便利です:
- 大きなインデックスサイズ — フルの
search-index.jsonがブラウザへのダウンロードには大きすぎる場合 - APIコンシューマー — ボット、CLIツール、インテグレーションがブラウザなしで検索にアクセスする必要がある場合
- サーバーサイド処理 — 検索インデックスをクライアントから離したい場合
仕組み
Search Workerはデプロイ済みのサイトから同じsearch-index.jsonを取得し、5分のTTLでキャッシュします。同一のMiniSearch設定(プレフィックス、ファジー、ブースト設定)を使用するため、結果はクライアントサイド検索と一貫しています。
比較
| 機能 | クライアントサイド検索(組み込み) | Search Worker |
|---|---|---|
| ランタイム | ブラウザ(インメモリ) | Cloudflare Workers |
| セットアップ | 不要(デフォルトで有効) | Cloudflareアカウント + KV |
| インデックスダウンロード | フルインデックスをブラウザに送信 | インデックスはサーバーサイドに留まる |
| 最適な用途 | 小〜中規模のドキュメント | 大規模なドキュメント、APIコンシューマー |
| レイテンシ | 即時(ローカル) | ネットワークラウンドトリップ |
セットアップ手順、APIドキュメント、デプロイの詳細については、Search Worker APIリファレンスを参照してください。