記事とウェブページの検索の概要
サイトに検索フォームを設置することで記事とウェブページを検索できます。
検索に利用する CGI スクリプト
記事とウェブページの検索は mt-search.cgi
を利用します。Movable Type 8 から用意されている mt-cdsearch.cgi
で検索することはできません。
mt-search.cgi
のスクリプト名は、SearchScript 環境変数で変更できます。
PSGI 環境においては、CGI ファイル名を変更しただけではスクリプトファイル名の変更が行われません。必ず SearchScript 環境変数で新しいスクリプト名を指定してください。
検索対象
検索対象となるオブジェクト
mt-search.cgi による検索では、記事とウェブページが検索対象になります。
検索対象となるフィールド
記事とウェブページの中の以下のフィールドに入力された内容を検索します。
- タイトル
- 本文
- 続き
- キーワード
半角スペース区切りで複数の検索ワードを指定した場合は AND 検索になります。
日付範囲の指定
「公開日」の日時を使用して範囲検索ができます。
検索する範囲は、archive_type
パラメーターにアーカイブタイプ名を指定することで決定されます。例えば、archive_type=Yearly と指定した場合は、year
パラメーターで指定された年の記事とウェブページが検索されます。指定したアーカイブタイプでどの範囲が検索されるかは、以下のルールに従います。
- archive_type に Daily が含まれる場合、指定した日に検索範囲を絞る
- archive_type に Weekly が含まれる場合、指定した日を含む週に検索範囲を絞る
- archive_type に Monthly が含まれる場合、指定した日を含む月に検索範囲を絞る
- archive_type に Yearly が含まれる場合、指定した日を含む年に検索範囲を絞る
また、日付の範囲指定に関連するパラメータは下表のとおりです。
パラメーター | 必須 | 説明 |
---|---|---|
archive_type | 必須 | 有効なアーカイブタイプを指定して検索範囲を決定します。 |
year | 必須 | 検索範囲の「年」の部分を指定します。 |
month | 検索範囲の「月」の部分を指定します。省略された場合「01」がセットされます。 | |
day | 検索範囲の「日」の部分を指定します。省略された場合「01」がセットされます。 |
検索結果のソート
mt-search.cgi の検索では、検索結果のソートと並び順の指定に SearchSortBy と SearchResultDisplay パラメーターを使用します。各パラメーターが指定されていない場合は、環境変数 SearchSortBy と SearchResultDisplay の内容が利用されます。
指定できる値は以下のとおりです。
SearchSortBy
authored_on
記事やウェブページの「公開日」の日時でソートします。author_id
記事やウェブページの作成ユーザー ID でソートします。basename
「出力ファイル名」でソートします。comment_count
記事やウェブページが受信したコメントの件数でソートします。created_on
記事やウェブページの作成日時でソートします。excerpt
記事やウェブページの「概要」でソートします。modified_on
記事やウェブページの変更日時でソートします。text
記事やウェブページの「本文」でソートします。text_more
記事やウェブページの「続き」でソートします。title
記事やウェブページのタイトル(件名)でソートします。
SearchResultDisplay
ascend
古い方(小さい方)から順に表示します。descend
新しい方(大きい方)から順に表示します。
検索結果テンプレート
mt-search.cgi での検索結果は、特に指定がない場合は type が「search_results」であるテンプレートが利用されます。
検索時に設定できるパラメーター
mt-search.cgi での検索では、以下のパラメーターを指定することができます。大文字小文字は区別されます。
IncludeBlogs
検索対象にするサイトの ID(blog_id)をカンマ区切りで指定します。
ExcludeBlogs
検索対象にしないサイトの ID(blog_id)をカンマ区切りで指定します。
SearchSortBy
検索データをソートするフィールドを指定します。
SearchResultDisplay
検索データのソート順を指定します。
Template
検索結果テンプレートのフォーマットを指定します。
値には、mt-config.cgi に記述した SearchAltTemplate で設定したフォーマット名を使用します。
例えば、mt-config.cgi での SearchAltTemplate の設定が以下の場合、このテンプレートファイルを検索結果の表示に使用するには Template パラメーターの値を work
にします。
SearchAltTemplate work work.tmpl
archive_type
範囲指定するとき、対象となるアーカイブタイプを指定します。
author
記事・ウェブページの作成者でフィルタリングする場合、ユーザーの表示名を指定します。
blog_id
検索のベースになる blog_id を指定します。template_id や Template パラメーターが未指定の場合、blog_id で指定したサイトの検索結果テンプレートが検索結果の表示で利用されます。
category
検索結果をカテゴリ、フォルダでフィルタリングする場合、それらの名前を指定します。(ベースネームではありません)
class
検索結果を記事・ページでフィルタリングします。記事の場合は entry
、ウェブページの場合は page
を指定します。
limit
1 ページあたりの検索数を指定します。
day
日付範囲指定の「日」を指定します。
filter
検索対象フィールドを変更します。 デフォルトではタイトル(title)、キーワード(keywords)、本文(text)、続き(text_more)が検索対象ですが、この検索対象を上書きします。 複数指定はカンマ区切りではなく、クエリパラメーターを複数指定します。
mt-search.cgi?search=検索ワード&IncludeBlogs=9&limit=20&filter=title&filter=keywords
limit_by
search パラメーターによるキーワード検索の際、複数の検索ワードを半角スペースで区切ったときの検索条件を指定します。
all
(デフォルト)- AND 検索(指定したすべての検索ワードを含む)
any
- OR 検索(指定したいずれかの検索ワードを含む)
exclude
- AND NOT 検索(指定したどの検索ワードも含まない)
month
日付範囲指定の「月」を指定します。
offset
検索結果のうち、スキップしたい件数を指定します。
page
検索結果が複数ページに分かれる場合、表示したい検索結果ページの数値を指定します。
search
検索する文字列を指定します。
tag
タグ検索の文字列を指定します。
template_id
検索結果の表示に利用するテンプレートの ID を指定します。
year
日付範囲指定の「年」を指定します。
関連するテンプレートタグ
こちらのテンプレートタグリファレンスをご参照ください。
関連する環境変数
こちらの環境変数リファレンスをご参照ください。