静的サイトに特化した全文検索ライブラリ「Pagefind」をレンタルサーバーのmixhostで動かしてみた【ファイル数がそんなに多くなければ共有レンタルサーバーでも大丈夫そう】

自分のサイト内検索には現在、Googleを使用しております。しかし
【Google Search Consoleでページのインデックス確認すると】Googleサイト内検索で全然引っかからないなと思ったら6月最初前後でだいぶインデックスされなくなっていた(2023年07月05日 (水曜日))
全てのエントリ(ページ)が登録されているわけではありません。

以前に
静的サイトに特化した全文検索ライブラリ「Pagefind」、さくらのレンタルサーバで動かしてみた - Publickey
こちらを見て、私のブログやサイトにも全文検索、付けられないかな?基本的にブログのシステムはMovableTypeで各エントリは静的HTMLファイルで生成しているし、と思ってたのですがレンタルサーバーなのでそういう環境がないとコマンドからのインストールは出来ません。

で、
Hugo 製のブログに Pagefind で検索機能をつけて Cloudflare Pages でデプロイする
そうか、Linux用バイナリが公開されているからバイナリをダウンロードしてアップ、もしくはレンタルサーバー側で直接ダウンロードして展開すりゃいいのか。

Installing and running Pagefind | Pagefind -- Static low-bandwidth search at scale
Pagefind publishes two releases, pagefind and pagefind_extended. The extended release is a larger binary, but includes specialized support for indexing Chinese and Japanese pages.
「Pagefindは、pagefindとpagefind_extendedという2つのリリースを公開しています。拡張リリースはより大きなバイナリですが、中国語と日本語のページのインデックス作成に特化したサポートが含まれています。」
との事なので pagefind_extended
Releases · CloudCannon/pagefind
から
Releases · CloudCannon/pagefindからpagefind_extended-v1.2.0-x86_64-unknown-linux-musl.tar.gzをダウンロード
Releases · CloudCannon/pagefindからpagefind_extended-v1.2.0-x86_64-unknown-linux-musl.tar.gzをダウンロード
pagefind_extended-v1.2.0-x86_64-unknown-linux-musl.tar.gz
をダウンロードもしくはレンタルサーバーから直接ゲットします(確かにファイルサイズ、pagefind_extendedの方がかなり重い)。とりあえずWebサイトのルートにpagefind_extendedを設置し実行権限つけて実行。
./pagefind_extended --site サイトのパス --glob="指定したフォルダだけインデックス作成してほしいのでフォルダ指定/**/*.html" --output-path="作成ファイルを格納するフォルダを指定/pagefind"
Required argument site not supplied. Pagefind needs to know the root of your built static site.
Provide a --site flag, a PAGEFIND_SITE environment variable, or a site key in a Pagefind configuration file.
あれ?HTMLファイルがないとか出てくるな。今回の環境ではサイトのパスは/home/ユーザー名からの絶対パスにする必要があるみたい。作成ファイルを格納するフォルダはプログラムが置いてある場所からの相対バスでも大丈夫でした。ただフォルダの中にpagefindフォルダというやり方だと検索結果のURLのパスがおかしい事になりましてしょうがないので/直下にpagefindフォルダ作る設定、すなわち--output-path="pagefind"で設定。

で試しにたいしてファイルがないフォルダを指定して生成してみましたがそういや文字コード、わが家のWebサイトで古い部分ですとUTF-8じゃないところがあってそういうHTMLは検索結果が文字化け・・・・
静的サイトに特化した全文検索ライブラリ「Pagefind」の検索結果で文字化け
そりゃ、今時Shift_JISとかに対応する必要、ないもんね・・・・・・EUC-JPとか・・・・まあブログのインデックス作りたいなら基本はUTF-8なのでその心配は不要でございますが。

おおよそうまく動いたのでいよいよブログのディレクトリを指定して実行しました。軽いプログラムと聞いていましたが我がサイトの規模だと厳しいようで、先程はファイル数が少ないフォルダを指定したら瞬時に終わりましたが、ブログのディレクトリを指定するとエラーになってしまいました・・・・
実際使うとなると定期的にプログラムを実施するcronとか使う事になるし、これでは厳しい。というのがわかっただけでも今回の検証はヨシ!!とします。本当にやりたければ専用サーバー借りるかクラウドでもそこそこの借りるか、ローカルで生成してアップロードする感の流れにしないと駄目ね。

関連
mixhostでnode.jsをインストールして動かしてみる - レンサバブログ
Pagefind を使ってみました | koukiitou.com
続・ブログをはてなブログからHugo+Cloudflare Pages(+R2)に移行しました - ricemountainer-blog
Astro + Pagefindでブログに検索機能を実装する