logo hsb.horse

Architecture Decision Record

Pagefindによるサイト内検索導入方針

静的サイト向け全文検索としてPagefindを採用し、言語別検索ページとビルド連携を標準化する。

採用 #search #pagefind #architecture #i18n

Pagefindによるサイト内検索導入方針

Decision

  • サイト内検索エンジンとして Pagefind を採用する。
  • 検索ページは /search/{lang}/search を提供し、各ページの html[lang] に応じた言語インデックスを利用する。
  • ビルド手順は astro build の後に Pagefind インデックス生成を必須化する。
  • ヘッダー検索導線は常に現在ロケールの検索ページへ遷移させる。

Context

本サイトは静的配信であり、サーバーサイド検索基盤を追加せずに全文検索を提供したい。加えて ja/en/ko/fr/de/pt の多言語URLを運用しているため、検索結果も言語ごとに分離されることが望ましい。

Options

  • Option A: 外部検索サービス(SaaS)を利用する。
  • Option B: 独自の検索APIを実装する。
  • Option C: 静的インデックスを生成できる Pagefind を導入する(採用)。

Rationale

  • Pagefind は静的HTML出力後に実行でき、Astro構成と相性が良い。
  • html[lang] を利用した多言語インデックス切替を標準機能で扱える。
  • クライアントサイドで完結するため、運用コストとインフラ依存を増やさない。

Consequences

  • 本番ビルドでは dist/pagefind/ の生成を必須とする。
  • 検索UIの初期導入は @pagefind/default-ui を利用し、必要に応じて将来カスタムUIへ段階移行する。
  • 検索品質の改善(除外セレクタ、重み付け、メタデータ強化)は運用後の実測を見て追加対応する。