本サイトに待望の全文検索機能を実装した.Algolia社のDocSearchの審査に通らなかったので,同社のFree hacker planを利用した.

Algolia

Algoliaは,リアルタイム検索をSaaSで提供するサービス群.今回は,DocSearchおよびFree hacker planの利用を検討した.

DocSearch

DocSearch申請用ページで登録したURLが審査に通ると,Algoliaのクローラが自動でインデックスファイルを構築し,検索用APIを公開してくれるという,ゆとりには嬉しいサービス.何を隠そうJekyllの検索システムもこれで実装されている.今回は残念ながら審査に通らなかった1ので,Free hacker planを利用することにした.

docsearch

Free hacker plan

自力で作成したインデックスファイルをAlgoliaにアップロードし,検索用APIを利用するプラン.マスターデータは1万件まで登録でき,APIを月10万回まで利用できる.Algoliaを利用してサイト内検索機能を実装する - WEB EGGによると,上限をオーバーすると検索もコンテンツの追加もできなくなるみたい.月1万PV程度のブログでギリギリ足りない感じらしいので,本ウェブサイトなら余裕である2

hacker

幸い,Jekyll向けのプラグインがあるため,私でも簡単に実装できた.以下に手順を示す.

手順

以下は基本的にAlgolia for Jekyll - AlgoliaおよびBlog search - Algolia for Jekyllに則っているが,ウェブサイトの一貫性を保つために一部のコードを修正している.

Algoliaのユーザ登録

Algoliaからサインアップする.以降の処理で,ダッシュボードのApplication IDSearch-Only API Key,およびAdmin API Keyが必要なのでメモしておく.

jekyll-algliaの設定

Gemfileに以下を追記し,$ bundle updateする.

_config.ymljekyll-algoliaの設定を追加する.

インデックスの作成とアップロード

シェルで以下を実行する.

ここで,Admin API Keyはローカルで保管する必要がある.間違ってGitHub等にアップしないように注意.以降は,検索窓の実装に入る.

_layouts/search.html

Blog search - Algolia for Jekyllsearch.htmlを参考にした.ただし,本ウェブサイトのベーステーマであるCentrariumと整合するよう,一部に手を加えた.

_includes/algolia.html

Blog search - Algolia for Jekyllalgolia.htmlを参考にした.

search.md

全文検索用のSearchページを作成するために,以下のsearch.mdファイルを作成した.

感想

これで,本ウェブサイトに欲しかった機能はあらかた実装してしまった.結構書きたい(書かないと忘れてしまいそうな)ことが溜まってきたので,しばらくは統計・機械学習のノウハウや理論を書いていきたい.

参考

  1. Algolia社が定める”technical documentation site”ではないと,丁寧なお祈りメールが来た.そもそも日本語だと通りづらいんじゃないか. 

  2. 月1000PVくらい.