Astro向けの静的サイト検索

先月、3つのAIディレクトリサイトに検索機能を追加しました。

Pagefindを採用する前に、主に4つの選択肢を比較しました。なぜこれを選んだのか、その理由を説明します。

比較対象

• Pagefind: Rustベースのライブラリ。ビルド時に実行され、すべてを静的ファイルとして配信します。 • Algolia DocSearch: ホスト型サービス。高速で洗練されていますが、商用サイトでは費用がかかります。 • Lunr.js: クライアントサイドのライブラリ。オフラインでも動作しますが、初期ページの読み込みが重くなります。 • FlexSearch: Lunrよりも高速な代替案ですが、依然としてインデックス全体をブラウザに送信する必要があります。

Pagefindを選んだ理由

  1. インデックスのサイズ 私のサイトには1,000件のエントリがあります。Lunrのインデックスを使用すると、ページを読み込むたびに4MBが追加されます。Pagefindはシャード(分割)を使用します。ユーザーが入力するのに合わせて、小さなチャンクを読み込みます。そのため、初期読み込みは30KB未満に抑えられます。

  2. コスト Algoliaは商用サイトの場合、月額49ドルかかります。3つのサイトすべての合計予算は月額25ドルです。Pagefindは無料です。

  3. デプロイ Pagefindは静的ファイルを作成します。Cloudflare Pagesはこれらをエッジで自動的にキャッシュします。APIキーを管理したり、レート制限を心配したりする必要はありません。

トレードオフ

Pagefindは完璧ではありません。以下の2つの欠点を知っておく必要があります。

• クエリのログ記録ができない: Pagefindはブラウザ上で動作します。ユーザーが何を検索したかを教えてはくれません。Algoliaはこれを自動的に行います。Pagefindを使用する場合は、独自のロギング層を構築する必要があります。 • 基本的なタイポ許容度: Pagefindは基本的なステミングを使用します。大きな打ち間違いには対応が難しいです。Algoliaの方がタイポの処理に優れています。

比較まとめ

• Pagefind: 無料、静的ファイルを使用、遅延読み込みによりスケーラビリティが高い、基本的なタイポ許容度。 • Algolia: 月額49ドル、クラウドインフラを使用、スケーラビリティが高い、強力なタイポ許容度。 • Lunr.js: 無料、ページと一緒にインデックスを送信、スケーラビリティが低い、弱いタイポ許容度。

私の結論

500から1,000件程度のエントリがあり、限られた予算で静的サイトを運営しているなら、Pagefindを使うべきです。高度な分析や完璧なタイポ許容度が必要なら、Algoliaに料金を支払ってください。

出典: https://dev.to/morinaga/static-site-search-for-astro-in-2026-why-i-picked-pagefind-over-algolia-and-lunr-3891