検索
On this page
検索
BX Sites の検索は完全に静的でクライアントサイドです。mkdocs
がデフォルトで使用するのと同じアプローチです: build 時に一度作成されるインデックスと、
訪問者のブラウザで実際の検索を行う lunr.js の組み合わせです。
サーバー、データベース、外部検索サービスは一切不要です。
仕組み
build時に、SearchIndexerがすべての非隠しページを巡回してsite/search-index.jsonを書き出します: 各ページのtitle、url、 フロントマターのtags、ページ上のすべての見出しのテキスト、 本文の切り詰めたプレーンテキストのコピー(HTML タグを除去)を 1 エントリとして格納します。- 各テーマの
search.bxmパーシャルが検索ボックスをレンダリングします。layout.bxmはbxsites.jsonのsearchがtrueの場合のみ これ(とlunr.js+ 共有search.jsスクリプト)を含めます。 - ブラウザでは、共有の
assets/search.jsウィジェットがsearch-index.jsonを 一度取得し、lunrインデックスをビルドして(titleを最高優先度として、 フロントマターのtags、headings、本文テキストの順)、キーストロークごとに 検索します。ネットワークラウンドトリップは発生しません。
キーボードショートカット
/- 他のフィールドに入力中でない限り、ページのどこからでも検索ボックスにフォーカスします (mkdocs-material と同じ慣習)。Escape- 結果のドロップダウンを閉じ、検索ボックスのフォーカスを外します。
無効化
{ "search": false }
search-index.json のビルドを完全にスキップし、すべてのレンダリングされたページから
検索ボックス、同梱された(バンドルされた)lunr.js スクリプト、共有 search.js ウィジェットをスキップします。
検索をオフにしたプロジェクトは検索関連のものを一切送信しません。
インデックスのみ再ビルド
bxSites search-index
search-index.json を更新するだけの場合に便利です。build はその手順の一つとして
これを自動的に実行するため、通常のビルドの後に別途実行する必要はありません。