Movable Typeのサイト全体の検索に使うインタフェースは、Jay Allenが開発したMovable Typeのプラグインであるmt-searchが統合されたものです。 検索エンジンは、単純なキーワード検索と新規コメント検索の2種類をサポートします。 単純なキーワード検索では、ブーリアン(真偽値)の検索、句の検索、および任意で正規表現のマッチングをサポートします。 新規コメント検索(正確には検索というよりもほとんどの一覧表示)は、指定した期間内のサイトに投稿された新しいコメントをすべて一覧します。
検索クエリーは、あなたのサイトのアクティビティ・ログに記録されます。
検索結果のテンプレートは、1つのウェブログごとに管理されていないため、Movable Typeの他のテンプレートのようには管理されません。したがって、編集メニューに検索結果のテンプレート・セクションを設けるのも意味がありません。 検索結果のテンプレートは、 search_templates/ ディレクトリのファイルで、このディレクトリは mt.cgi と同じディレクトリにあるはずです。
検索結果のテンプレートでは、「検索結果タグ」を使って検索結果を表示します Movable Typeのほかのほとんどのタグも使えますが、タグを使うコンテキストをよく考慮する必要があります。 さらに、検索結果のページは動的で、誰かがあなたのサイトで検索するたびにページは再構築されます。したがって、たとえば <MTArchiveList> や <MTCalendar> など、多くのサーバー・リソースと時間を要するタグを使うときには注意が必要です。
そのほか、 <MTInclude> タグを検索結果テンプレートに使って、テンプレート・モジュールや外部のファイルを含めることができます。 こうした、コンテキストに1つのウェブログが必要なタグ(テンプレート・モジュールは1つのウェブログごとに保存されるので)を <MTSearchResults> コンテナ・タグの外側に使うこともできます。 ただし、この方法には注意を要します。特に、あなたのサイトに複数のウェブログが存在している場合は慎重にすべきです。 たとえば、以下のタグをテンプレートで使った場合、
<$MTInclude module="Header"$>
システムは、 Header というモジュールがどのウェブログにあるのかを知る必要があります。 検索結果が見つかった場合、システムはアルファベット順に一番早いウェブログを探します。検索結果がない場合、Movable Typeはデータベースからウェブログをロードしようと試みます(選択されるウェブログの決定は、未定義です)。
この動作は将来、改善される可能性があります。
Movable Typeのデフォルト・テンプレートは、サイトのウェブログを検索するための簡単な検索フォームを含みます。 これはフォームの一例です。
<form method="get" action="<$MTCGIPath$><$MTSearchScript$>"> <label for="search" accesskey="4">検索するサイト:</label><br /> <input id="search" name="search" size="20" /><br /> <input type="submit" value="Search" /> </form>
以下は、オプションがすべて表示された完全なフォームの一例です。
<form method="post" action="<$MTCGIPath$><$MTSearchScript$>"> <input size="30" name="search" value="<$MTSearchString$>" /> <input type="submit" value="Search" /><br />
<input type="checkbox" name="CaseSearch" />大文字と小文字の区別 <input type="checkbox" name="RegexSearch" />正規表現の検索<br />
<b>検索:</b> <input type="radio" name="SearchElement" value="entries" />エントリー <input type="radio" name="SearchElement" value="comments" />コメント <input type="radio" name="SearchElement" value="both" />両方<br />
<b>並べ替え基準:</b> <select name="SearchSortBy"> <option value="created_on">作成日時</option> <option value="title">タイトル</option> </select><br />
<b>並べ替え順:</b> <select name="ResultDisplay"> <option value="ascend">昇順</option> <option value="descend">降順</option> </select><br />
<b>対象外にするウェブログ:</b> <MTBlogs> <input type="checkbox" name="ExcludeBlogs" value="<$MTBlogID$>" /> <$MTBlogName$> </MTBlogs><br />
<b>エントリーの検索対象期間:</b> <select name="SearchCutoff"> <option value="9999999">最初から</option> <option value="7">1週間前から</option> <option value="14">2週間前から</option> <option value="30">1カ月前から</option> <option value="60">2カ月前から</option> <option value="90">3カ月前から</option> <option value="365">1年前から</option> </select><br />
<b>ウェブログごとの検索結果の表示数:</b> <select name="MaxResults"> <option value="5">5</option> <option value="10">10</option> <option value="25">25</option> <option value="50">50</option> <option value="100">100</option> <option value="9999999">すべて</option> </select> </form>
この検索フォームでは、ユーザーは検索パラメータを一層柔軟に扱え、大文字と小文字の区別や、真偽値のクエリーの代わりに正規表現のマッチが使えるなど、検索条件をより具体的にできます。 検索対象は、エントリーまたはコメント、あるいはその両方に限定できます。 ただし、コメント検索はエントリー検索に比べ、より時間とリソースを費します。
上のフォームには特定のウェブログを検索対象から外す機能も含まれています。 これは1つだけのウェブログを検索したい場合に便利です。 「 対象外にするウェブログ 」の代わりに以下を使うこともできます。
<b>検索対象のウェブログ:</b> <MTBlogs> <input type="checkbox" name="IncludeBlogs" value="<$MTBlogID$>" /> <$MTBlogName$> </MTBlogs><br />
これは「 対象外にするウェブログ 」の反対の設定ですが、この方がどんな検索をするにしろ、望ましいかもしれません。 たとえば、ウェブログを特定した検索結果ページを作成する方が、除外するウェブログのリストを維持するより、簡単です。ウェブログを特定するには、以下をフォームに追加するだけです。
<input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" />
<$MTBlogID$> はいつも現在のウェブログを参照します。したがってこの検索は、常に表示しているウェブログだけに限定されます。
上の検索フォームは単純な検索に使います。 以下は、完全な機能が揃った新規コメント検索フォームの一例です。
<form method="post" action="<$MTCGIPath$><$MTSearchScript$>"> <input type="hidden" name="Type" value="newcomments" />
<b>対象外にするウェブログ:</b> <MTBlogs> <input type="checkbox" name="ExcludeBlogs" value="<$MTBlogID$>" /> <$MTBlogName$> </MTBlogs><br />
<b>エントリーの検索対象期間:</b> <select name="CommentSearchCutoff"> <option value="9999999">最初から</option> <option value="7">1週間前から</option> <option value="14">2週間前から</option> <option value="30">1カ月前から</option> <option value="60">2カ月前から</option> <option value="90">3カ月前から</option> <option value="365">1年前から</option> </select><br />
<b>検索結果のエントリー表示数:</b> <select name="MaxResults"> <option value="5">5</option> <option value="10">10</option> <option value="25">25</option> <option value="50">50</option> <option value="100">100</option> <option value="9999999">すべて</option> </select><br />
<input type="submit" value="Find new comments" /> </form>
通常、検索が実施されると、デフォルトの検索結果テンプレートである default.tmpl が、あるいは新規コメント検索の場合は comments.tmpl が、結果を表示するために処理されます。 複数のウェブログがあり、各ウェブログに検索ツールを使っている場合は、ウェブログごとに検索結果の外見を変えたいと思うこともあるでしょう。 あるいは、公開しているサイトに複数のバージョンがあるとします。たとえば、画像を使った標準のバージョンと画像のない携帯デバイス用のテキスト主体のバージョンなどです。 こうした場合には、あなたのサイトの訪問者がどのバージョンを使っていようが、サイトを通して検索結果の外見と使い勝手を一貫させたいと思うことでしょう。
これを実施するには、 代替テンプレート を使います。 たとえば、各ウェブログには、それぞれのデザインにマッチした検索結果テンプレートを用意できます。また、サイトの各バージョンには、バージョン固有の検索結果テンプレートを用意することができます。
外見と使い勝手の異なるテンプレートをそれぞれ別の検索結果テンプレートに作成し、 search_templates/ ディレクトリに入れます。
mt.cfg ファイルをテキスト・エディタで開き、 AltTemplate ディレクティブを使って、代替テンプレートを設定します。 たとえば、あなたが Work と Play の2つのウェブログを持っており、各ウェブログにそれぞれテンプレートを用意したい場合は、以下を追加します。
AltTemplate work work.tmpl AltTemplate play play.tmpl
Movable Typeに検索結果のページを構築するとき、どのテンプレートを使うかを伝えるには、”hidden form input”(隠れたフォーム入力)を使います。 これを、たとえば、以下のように Work ウェブログの検索フォームに加えます。
<input type="hidden" name="Template" value="work" />
(注:検索をこの1つのウェブログだけに限定したい場合は、
<input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" />
をフォームにも加えることができます。
Jayの検索エンジンを使っていた場合は、Movable Typeに統合されたバージョンに変換する必要があります。 以下のステップに従います。
これをすでに済ませている場合は、検索エンジンが統合されているMovable Typeのバージョン2.5以降にアップグレードしたかどうかを確認します。
Movable Typeがアップグレードされ、検索エンジンが統合されているので、 mt-search.cfg と mt.cfg の2つの設定ファイルを使う必要はありません。 検索エンジンの新しいバージョンは、標準の mt.cfg ファイルに検索設定があることを期待します。
したがって、 mt.cfg と mt-search.cfg を共にテキスト・エディタで開き、 mt-search.cfg の中身をすべて mt.cfg にコピーする必要があります。
新しいバージョンの検索は、簡素化された AltTemplate フォーマットを使っており、代替テンプレートを数に限りなく指定することができます。 代替テンプレートをmt-searchと共に使っている場合は、 AltTemplateN ディレクティブを AltTemplate に変更する必要があります。 つまり、 AltTemplateN ディレクティブの最後にある数を削除します。 たとえば、以下を使っていた場合、
AltTemplate1 work work.tmpl
以下のように変更します。
AltTemplate work work.tmpl
TemplatePath 設定による混乱を避けるため、新しいバージョンの検索では、 TemplateDir という設定名を SearchTemplatePath に変更してあります。 たとえば、以下を使っていた場合、
TemplateDir /path/to/search_templates
以下のように変更します。
SearchTemplatePath /path/to/search_templates