サイト内検索は、サイト内のエントリー、コメント、およびエントリー・タグを対象とした検索です。ブログ内の各ページにある検索フォームに条件を入力すると、その条件にあった検索結果を表示します。また、検索結果をフィードの形式で出力できるため、フィード・リーダーを利用して検索結果を購読し、今後投稿されるエントリーやコメントへのアクセスを容易にします。
サイト内検索では、検索対象とするブログを指定したり、検索結果をカスタマイズすることができます。
特定のブログを検索の対象にするには、次の例のように、検索フォーム内のIncludeBlogsパラメーターに対象とするブログのブログIDを指定します。Movable Typeの標準テンプレートでは、検索フォームを表示しているブログのみを対象としています。
<div class="module-search module">
<h2 class="module-header">検索</h2>
<div class="module-content">
<form method="get" action="<$MTCGIPath$><$MTSearchScript$>">
<input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" />
<label for="search" accesskey="4">ブログを検索: </label><br />
<input id="search" name="search" size="20" />
<input type="submit" value="検索" />
</form>
</div>
様々な理由から、特定のブログを検索の対象からはずしたい場合があります。次の例のように、環境変数ExcludeBlogsに、該当のブログのIDを指定することで、検索の対象からはずすことができます。
ExcludeBlogs 1,2,4,7,10
この例では、ブログIDが1、2、4、7、10のブログは検索の対象にはなりません。これらのブログに対する検索は、検索フォームのIncludeBlogsパラメーターに指定することで、検索できるようになります。
検索結果のカスタマイズは、テンプレートの修正でおこないます。テンプレートは、検索の範囲によって、次のとおり場所が変わります。
アプリケーション・ディレクトリの下に、search_templatesディレクトリがあります。このディレクトリ内のdefault.tmplファイルをカスタマイズします。新規のコメントを検索の対象にする場合は、comments.tmplファイルです。FTPプログラム等でローカルにバックアップをとり、通常のテンプレートの変更と同様にカスタマイズしていきます。
Movable Type 3.3の標準テンプレートには、特定のブログを対象とする検索結果を出力するテンプレートが、システム・テンプレートとして追加されています。他のテンプレートと同様にカスタマイズしていきます。
以前のバージョンのテンプレートを利用している場合は、Template Backup and Replaceプラグインを使い、最新のテンプレート・デザインに更新する必要があります。
複数のブログで、検索結果のテンプレートを共通にする方法に、代替テンプレートがあります。これは、前述の方法と異なり、検索フォームの中で、検索結果テンプレートを指定するものです。代替テンプレートの設定は、次のとおりです。
標準の検索結果テンプレートを元に、テンプレートを作成します。
作成したテンプレートを、FTPクライアント等でアップロードします。アップロード先は、アプリケーション・ディレクトリの下の、search_templatesディレクトリです。
代替テンプレートの登録は、環境設定ファイルmt-config.cgiに対して行います。たとえば、作成したテンプレートのファイル名が、altsearch.tmplだった場合、mt-config.cgiに次のとおり記述します。
AltTemplate altsearch altsearch.tmpl
ファイル名altsearch.tmplの前のaltsearchは代替テンプレートの名前で、検索フォームの設定で利用します。
利用する代替テンプレートを、検索フォーム内に次のとおり設定します。
<div class="module-search module">
<h2 class="module-header">検索</h2>
<div class="module-content">
<form method="get" action="<$MTCGIPath$><$MTSearchScript$>">
<input type="hidden" name="Template" value="altsearch" />
<input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" />
<label for="search" accesskey="4">ブログを検索: </label><br />
<input id="search" name="search" size="20" />
<input type="submit" value="検索" />
</form>
</div>
このように、フォームの隠しフィードTemplateに、mt-config.cgiに設定した代替テンプレートの名前を設定するとで、利用できるようになります。
Movable Type 3.3以降のバージョンでは、検索結果をフィードリーダーで購読するための設定が、環境変数AltTemplateに事前に設定されています。代替テンプレートを設定する場合、この初期値の設定も有効にするために、環境設定ファイルmt-config.cgiに、次の行も追記してください。
AltTemplate feed results_feed.tmpl
検索フォームにさまざまなパラメーターを設定することで、検索機能をカスタマイズできます。次は、すべてのパラメーターを設定したフォームの例です。
<form method="post" action="<$MTCGIPath$><$MTSearchScript$>">
<dl>
<!-- 検索条件 -->
<dt><label for="search">検索条件</label></dt>
<dd><input size="30" name="search" value="<$MTSearchString$>" /></dd>
<!-- オプション -->
<dt><label for="CaseSearch">大文字と小文字の区別</label></dt>
<dd><input type="checkbox" name="CaseSearch" /></dd>
<dt><label for="RegexSearch">正規表現</label></dt>
<dd><input type="checkbox" name="RegexSearch" /></dd>
<!-- 検索範囲に関するパラメーター -->
<dt><label for="ExcludeBlogs">検索の対象外にするブログ</label></dt>
<dd>
<MTBlogs>
<input type="checkbox" name="ExcludeBlogs" value="<$MTBlogID$>" /> <$MTBlogName$>
</MTBlogs>
</dd>
<dt><label for="SearchCutoff">検索する対象期間</label></dt>
<dd>
<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>
</dd>
<!-- 検索対象に関するパラメーター -->
<dt><label for="SeachElement">検索の対象</label></dt>
<dd>
<input type="radio" name="SearchElement" value="entries" />エントリー
<input type="radio" name="SearchElement" value="comments" />コメント
<input type="radio" name="SearchElement" value="both" />両方
</dd>
<!-- 検索結果に関するパラメーター -->
<dt><label for="SearchSortBy">並べ替え基準</label></dt>
<dd>
<select name="SearchSortBy">
<option value="created_on">作成日時</option>
<option value="title">タイトル</option>
</select>
</dd>
<dt><label for="ResultDisplay">並べ替え順</label></dt>
<dd>
<select name="ResultDisplay">
<option value="ascend">昇順</option>
<option value="descend">降順</option>
</select>
</dd>
<dt><label for="MaxResults">ブログごとの検索結果の表示数</label></dt>
<dd>
<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>
</dd>
</dl>
<input type="submit" value="Search" /><br />
</form>
なお、これらのパラメーターは、環境設定ファイルmt-config.cgiに設定しておくことで、システム全体に共通の設定ができます。
サイト内検索や、エントリー・タグ検索について、検索を処理した後に一定時間の間、検索リクエストを受け付けないようにする機能が拡張されています。これは、ウェブ・サーバーに対する不正な攻撃を防止することを目的としています。
この機能を利用するには、次の環境を用意する必要があります。