ブログ記事詳細検索プラグイン(その5・ブログ記事のフィールドどうしでのOR検索)

SearchEntriesプラグインでは、「ブログ記事のタイトル/本文/続きのどれかに『Movable Type』が含まれている」などの、フィールドどうしでのOR検索を行うこともできます。

1.MTSearchConditionUnionタグ

これまでに取り上げてきた検索条件のタグ(MTSearchConditionValues等)を単に複数回書くと、AND検索になります。
しかし、AND検索ではなくOR検索を行いたい場合もあります(この記事の冒頭にあげた例など)。
その場合は、検索条件のタグとタグの間に、「<$mt:SearchConditionUnion op="or"$>」というテンプレートタグを入れます。

例えば、冒頭で挙げた例だと、以下のように書きます。

<mt:SearchConditions>
  <$mt:SearchConditionLike field="title" values="Movable Type"$>
  <$mt:SearchConditionUnion op="or"$>
  <$mt:SearchConditionLike field="text" values="Movable Type"$>
  <$mt:SearchConditionUnion op="or"$>
  <$mt:SearchConditionLike field="text_more" values="Movable Type"$>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li>
      <h1><$mt:EntryTitle$></h1>
      <div><$mt:EntryBody$></div>
      <div><$mt:EntryMore$></div>
    </li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>

2.MTSearchConditionSectionタグ

ORで結んだいくつかの条件を、他の条件とAND検索したい場合もあります。
そのような場合には、OR条件の部分を「MTSearchConditionSection」というタグのブロックで囲みます。

例えば、「タイトル/本文/続きのどれかに『Movable Type』を含み、かつコメント/トラックバックのどちらかがついている」というブログ記事を検索したいとします。
これは、以下の2つのOR検索の間を、AND検索で結ぶ形になっています。

  • タイトル/本文/続きのどれかに『Movable Type』を含む
  • コメント数またはトラックバック数が1以上

そこで、2つのOR検索の部分を、それぞれMTSearchConditionSectionタグのブロックで囲みます。
タグを組むと以下のようになります。

<mt:SearchConditions>
  <mt:SearchConditionSection>
    <$mt:SearchConditionLike field="title" values="Movable Type"$>
    <$mt:SearchConditionUnion op="or"$>
    <$mt:SearchConditionLike field="text" values="Movable Type"$>
    <$mt:SearchConditionUnion op="or"$>
    <$mt:SearchConditionLike field="text_more" values="Movable Type"$>
  </mt:SearchConditionSection>
  <mt:SearchConditionSection>
    <$mt:SearchConditionCompare field="comment_count" ge="1"$>
    <$mt:SearchConditionUnion op="or"$>
    <$mt:SearchConditionCompare field="ping_count" ge="1"$>
  </mt:SearchConditionSection>
</mt:SearchConditions>
<mt:IfNonZero tag="SearchLoadedEntryCount">
  <ul>
  <mt:Entries>
    <li>
      <h1><$mt:EntryTitle$>(コメント:<$mt:EntryCommentCount$> トラックバック:<$mt:EntryTrackbackCount$>)</h1>
      <div><$mt:EntryBody$></div>
      <div><$mt:EntryMore$></div>
    </li>
  </mt:Entries>
  </ul>
</mt:IfNonZero>

3.SearchEntriesプラグイン関係の記事の一覧

SearchEntriesプラグイン関係のその他の記事は、以下のリンクから参照できます。

MT Cloud Starter Kit
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください