Movable Type 3.2 マニュアル - サイト全体の検索

« 目次


サイト全体の検索

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 が、結果を表示するために処理されます。 複数のブログがあり、各ブログに検索ツールを使っている場合は、ブログごとに検索結果の外見を変えたいと思うこともあるでしょう。 あるいは、公開しているサイトに複数のバージョンがあるとします。たとえば、画像を使った標準のバージョンと画像のない携帯デバイス用のテキスト主体のバージョンなどです。 こうした場合には、あなたのサイトの訪問者がどのバージョンを使っていようが、サイトを通して検索結果の外見と使い勝手を一貫させたいと思うことでしょう。

これを実施するには、 代替テンプレート を使います。 たとえば、各ブログには、それぞれのデザインにマッチした検索結果テンプレートを用意できます。また、サイトの各バージョンには、バージョン固有の検索結果テンプレートを用意することができます。

  1. テンプレートを作成する

    外見と使い勝手の異なるテンプレートをそれぞれ別の検索結果テンプレートに作成し、 search_templates/ ディレクトリに入れます。

  2. テンプレートを構成設定に加える

    mt-config.cgi ファイルをテキスト・エディタで開き、 AltTemplate ディレクティブを使って、代替テンプレートを設定します。 たとえば、あなたが Work Play の2つのブログを持っており、各ブログにそれぞれテンプレートを用意したい場合は、以下を追加します。

    AltTemplate work work.tmpl
    AltTemplate play play.tmpl
    
  3. 検索フォームを設定する

    Movable Typeに検索結果のページを構築するとき、どのテンプレートを使うかを伝えるには、”hidden form input”(隠れたフォーム入力)を使います。 これを、たとえば、以下のように Work ブログの検索フォームに加えます。

    <input type="hidden" name="Template" value="work" />
    

    (注:検索をこの1つのブログだけに限定したい場合は、

    <input type="hidden" name="IncludeBlogs" value="<$MTBlogID$>" />
    

    をフォームにも加えることができます。

以前のバージョンのmt-searchからMovable Typeに統合された検索エンジンに変換する

Jayの検索エンジンを使っていた場合は、Movable Typeに統合されたバージョンに変換する必要があります。 次のステップに従います。

  1. Movable Typeのコピーをアップグレードする

    これをすでに済ませている場合は、検索エンジンが統合されているMovable Typeのバージョン2.5以降にアップグレードしたかどうかを確認します。

  2. 設定値をコピーする

    Movable Typeがアップグレードされ、検索エンジンが統合されているので、 mt-search.cfg mt-config.cgi の2つの設定ファイルを使う必要はありません。 検索エンジンの新しいバージョンは、標準の mt-config.cgi ファイルに検索設定があることを期待します。

    したがって、 mt-config.cgi mt-search.cfg を共にテキスト・エディタで開き、 mt-search.cfg の中身をすべて mt-config.cgi にコピーする必要があります。

  3. AltTemplateの設定をアップグレードする

    新しいバージョンの検索は、簡素化された AltTemplate フォーマットを使っており、代替テンプレートを数に限りなく指定することができます。 代替テンプレートをmt-searchと共に使っている場合は、 AltTemplateN ディレクティブを AltTemplate に変更する必要があります。 つまり、 AltTemplateN ディレクティブの最後にある数を削除します。 たとえば、以下を使っていた場合、

    AltTemplate1 work work.tmpl
    

    以下のように変更します。

    AltTemplate work work.tmpl
    
  4. TemplateDir設定名を変更する

    TemplatePath 設定による混乱を避けるため、新しいバージョンの検索では、 TemplateDir という設定名を SearchTemplatePath に変更してあります。 たとえば、以下を使っていた場合、

    TemplateDir /path/to/search_templates
    

    以下のように変更します。

    SearchTemplatePath /path/to/search_templates
    

Copyright © 2001-2005 Six Apart, Ltd. All Rights Reserved.