まちゅダイアリー

まちゅダイアリーに全文検索と関連記事を追加した

2026-07-20

まちゅダイアリーに全文検索機能を追加した。

この日記は2003年から書き続けていて、記事数は約1,500本になっている。これだけ記事があると、昔書いた内容を探すのも一苦労。自分でも何を書いたのか忘れていることがある。

せっかく20年以上も書きためてきたのだから、過去の記事をもっと簡単に見つけられるようにしたい。

そこで、Astro 7へのアップデートに続いて、今回もCodexを活用して検索機能を追加することにした。

最初はQMDという検索エンジンを使って、全文検索と関連記事の表示を試していた。ただ、Astro 7への移行で記事を扱うAPIが変わったこともあり、実装方法を見直すことにした。

最終的に採用したのはPagefindという静的サイト向けの検索エンジン。Astroでサイトをビルドしたあとに記事の検索インデックスを生成する仕組みで、検索サーバーを別途用意する必要がない。Vercelで静的サイトとして公開しているまちゅダイアリーには、ちょうどよかった。

約1,500本の記事から約25,000語のインデックスを作成し、日本語の全文検索に対応。記事のタイトルだけでなく本文も検索でき、検索結果には日付や本文の抜粋も表示される。

さらに、検索窓に文字を入力すると、その場で候補の記事が表示される機能も追加した。PCでもスマートフォンでも使えるようにしている。

もう一つ追加したのが関連記事の表示だ。

こちらはPagefindとは別に、記事のタイトルと本文を解析して、内容が似ている記事を最大3件表示する仕組みを作った。

単純にタグが一致する記事を選ぶ方法もあるけれど、20年以上前の記事まで含めると、タグの付け方も統一されていない。そこで、日本語の文章を単語に分割し、TF-IDFという手法で記事同士の類似度を計算するようにした。

検索も関連記事も、サイトのビルド時に必要なデータを生成するので、新しいサーバーやデータベースは不要。これまでの静的サイトの構成を変えずに実現できた。

今回もCodexを使いながら実装を進め、検索結果や関連記事の正しさを確認するテストも追加した。Playwrightを使って、PCやスマートフォンで検索できることも検証している。

こうして検索機能を追加してみると、日記の使い方が少し変わった気がする。

これまでは新しい記事を書いて、古い記事はアーカイブに残しておくという使い方だった。これからは、昔考えていたことや試したことを検索で見つけたり、関連記事から思いがけない過去の記事にたどり着いたりできる。

20年以上の日記が、単に保存してある記録から、いつでも振り返れる自分のデータベースになった。

また少し、まちゅダイアリーが便利になった。