検索結果のフィルタリングと並べ替え

概要

ユーザーがサイトの適切なページにアクセスできるように、プログラム可能検索エンジンによって構造化された検索演算子が提供されます。これにより、ページで見つかった構造化データやサイト内の画像に関連付けられたメタデータに基づいて検索結果のサブセットにドリルダウンできます。

画像検索では、ページ上の構造化データと、サイトのクロール時に検出された画像メタデータの両方を利用します。すべてのウェブマスターの皆様に、Google の画像公開ガイドラインについて理解を深めることをおすすめします。

  1. ウェブ検索
  2. 画像検索
  3. プログラム可能検索要素の構造化検索

ウェブ検索

テキストは単語の自由形式のシーケンスであるテキストとは異なり、構造化データは論理的に、属性のセットを含むオブジェクトのセットに編成されます。プログラム可能検索エンジンは、日付、著者、評価、価格など、構造化された検索演算子で使用されるさまざまな構造化データを抽出します。これは、カスタム スニペットで使用できるデータと同じです。また、プログラム可能検索エンジンでは、次のいずれかの形式の構造化データがサポートされています。

  • PageMap: PageMap は、構造化データを属性と値を持つ DataObject として明示的に表現し、ウェブページに埋め込まれた XML ブロックとしてエンコードします。プログラム可能検索エンジンは、整形式な PageMap データをすべての構造化検索演算子で利用できるようにします。また、カスタム スニペットで使用することもできます。
  • meta タグ: Google が <meta name="NAME" content="VALUE"> 形式の meta タグから選択したコンテンツを抽出します。<meta name="pubdate" content="20100101"> 形式の meta タグは、&sort=metatags-pubdate 形式の検索演算子と組み合わせて使用できます。
  • ページの日付: Google は、URL やタイトル、署名日、その他の機能に基づいてページの日付を推定します。この日付は、&sort=date のように、特別な構造化データタイプ date を使用する並べ替え演算子で使用できます。
  • リッチ スニペット データ: Google では、次のような公開基準からデータのサブセットも抽出しています。 。プログラム可能検索エンジンの構造化データの演算子で使用します。 たとえば、Microformat の hrecipe 標準でマークアップされたページを評価に基づいて並べ替えるには、&sort=recipe-ratingstars を使用します。

詳しくは、構造化データの提供についての説明をご覧ください

ページに構造化データが含まれている場合、プログラム可能検索エンジンの構造化検索演算子を適用して、検索を特定のデータ値を持つフィールドに制限したり、数値で厳密に並べ替えたり、並べ替えではなく特定の値に対してバイアスを行ったりできます。また、特定の数値範囲に制限することもできます。

プログラム可能検索エンジンは、構造化データに対して次の検索演算子をサポートしています。

トップへ戻る

属性でフィルタ

属性でフィルタリングすると、次の 3 種類の結果を選択できます。

  • 特定の DataObject が付加された結果(レビューなど)
  • 指定したフィールドを持つ DataObject による結果(価格帯のレビューなど)。
  • 5 つの星を含むレビューなど、特定のフィールドの値がある結果。

属性でフィルタリングするには、more:pagemap:TYPE-NAME:VALUE 演算子を検索クエリに追加します。これにより、検索結果は、その型、名前、値と完全に一致する構造化データを含むページに限定されます。(プログラム可能検索エンジンは、ページマップ データ、JSON-LD、microformat、metatag、RDFa、microdata で始まる 1 ページあたり最大 200 個の属性を変換します)。属性は 128 文字以下にする必要があります。この演算子は、VALUE を省略して名前付きフィールドのすべてのインスタンスと照合するか、-NAME:VALUE を省略して指定されたタイプのすべてのオブジェクトを照合できます。

構造化データから完全な演算子がどのように構築されるかを確認するには、前に使用した例を思い出してください。

[halloween more:pagemap:document-author:lisamorton]

more:pagemap:document-author:lisamorton の制限をより詳細に分析すると、more: 演算子はプログラム可能検索エンジンが絞り込みラベルに使用するもので、絞り込みの pagemap: 部分はインデックス登録された PageMap 内の特定の属性によって検索結果を絞り込むよう指示し、演算子の残りの要素(document-authorlisamorton)は制限ドリルダウンの内容を指定します。この例の PageMap を思い出してください。

<PageMap>
  <DataObject type="document">
    <Attribute name="title">The Five Scariest Traditional Halloween Stories</Attribute>
    <Attribute name="author">lisamorton</Attribute>
  </DataObject>
</PageMap>

この演算子の document-author: 修飾子は、author という名前の属性を持つ document 型の DataObject を検索するように指示します。この構造化データキーには値 lisamorton が続きます。この値は、この制限を含む検索で返される属性の値と完全に一致する必要があります。

more:p:document-author:lisamorton

属性でフィルタリングする場合は、コンパクトなクエリを使用して、より複雑なフィルタ(および短いコマンド)を作成できます。たとえば、URL に次の PageMap を追加できます。

    <pagemap>
      <DataObject type="document">
        <Attribute name="keywords">horror</Attribute>
        <Attribute name="keywords">fiction</Attribute>
        <Attribute name="keywords">Irish</Attribute>
      </DataObject>
    </pagemap>
  </page>

「アイリッシュ AND フィクション」というクエリの結果を取得するには、次のクエリを使用します。

more:p:document-keywords:irish*fiction

これは more:pagemap:document-keywords:Irish more:pagemap:document-keywords:fiction と同じです。

「アイリッシュ AND(フィクションまたはホラー)」の結果を取得するには、次のコマンドを使用します。

more:p:document-keywords:irish*fiction,irish*horror

トップへ戻る

ブランチでフィルタ

ブランチによるフィルタは、JSON-LD、Microformat、RDFa で使用できる属性によるフィルタのバリエーションです。これは、JSON-LD 構造化データで使用できる属性による唯一のフィルタタイプです。

構造化データにツリーが含まれていない場合、または子のないツリーのみが含まれている場合、制限は属性によるフィルタと同じです。 ただし、子を持つツリーには次のような制約があります。ルートノードからリーフノードまでの各ノードの type-name

  • ルートのタイプは Event です。
  • 名前は rating です。
  • 子どものタイプが AggregateRating である
  • 子の属性名が ratingCount で値が 22 である
評価数で終わるブランチについて、制限「more:pagemap:event-rating-aggregaterating-ratingcount:22」を生成します。

属性によるフィルタリングまたはブランチと他の特徴を使用したブランチの使用

この自由形式の構文を使用して、サイトのドキュメントの PageMap で指定されたコンテンツをドリルダウンできます。この構文は、Google でサポートされているほぼすべての構造化データ推定ページ日を除く)でも使用できます。これらの more:pagemap: 演算子を絞り込みラベルまたは非表示のクエリ要素とともに使用すると、アプリケーションにとって重要な属性で結果をフィルタリングできます。これにより、エンドユーザーはこれらの制限修飾子を直接入力する必要がなくなります。

検索演算子の一部を省略することもできます。上記の例では、PageMap は document 型の DataObject と author 型の属性を指定しています。ただし、サイトのすべてのページがドキュメントであるとは限りません。また、すべてのドキュメントに著者が関連付けられているとは限りません。more:pagemap:document-author 形式の演算子を使用すると、属性の値に関係なく、document 属性の author 属性を持つすべてのページの結果が返されます。同様に、more:pagemap:document 型の DataObject を持つ PageMap の結果はすべて、その DataObject のフィールドに関係なく返されます。

制限のためにテキスト値をトークン化する

スペース、句読点、特殊文字を含む属性値は、ほとんどの場合別々のトークンに分割されます。たとえば、プログラム可能検索エンジン@google という属性値は、3 つの別々のトークン(カスタム検索)と Google 引用符に分割されます。これにより、本番環境の説明など、多数の単語と句読点に埋め込まれた 1 つの単語を検索できます。(プログラム可能検索エンジンでは、文字列ごとに最大 10 個のトークンが抽出されるため、属性値に含まれる単語が 10 個を超える場合は、すべての結果が制限されるわけではありません)。たとえば、次の PageMap には、プログラム可能検索エンジンの本番環境に関する説明が含まれています。

<PageMap>
  <DataObject type="product">
    <Attribute name="description">Programmable Search Engine provides customized search engines</Attribute>
  </DataObject>
</PageMap>

次の制限では、検索に関する product-description 属性を持つすべてのページが検索対象となります。

[more:pagemap:product-description:search]

テキスト値をトークン化するためのその他のルール:

  • 制限のために、テキスト値は小文字に変換される
  • 最大 6 つのトークンを含む文字列の場合、文字列全体に追加の制限が生成され、空白(please_attend など)は _ に置き換えられます。
  • ストップワードTheaしかしよって検索には不向きな単語に対しては、個別の制限は生成されません。この場合、テキスト値: 「main point」は、main、point、the_main_point で制限を生成しますが、制限は生成しません。
  • 制限値を構成するには、テキスト値の最初の 10 語のみが使用されます。
  • 区切り文字として扱われない句読点文字はアンダースコア(_)に変換されます。

複数の制限を使用してトークン化された値をドリルダウンする

より詳細な制限を行うには、他の制限を追加します。たとえば、検索エンジンの商品について説明するページのみを取得するには、制限を追加します。

[more:pagemap:product-description:search more:pagemap:product-description:engine]

more:pagemap: の制限の順序は重要ではありません。トークンは属性値から順序付けされていないセットに抽出されます。

これらの制限はデフォルトで AND で結合されますが、OR 演算子で結合して、いずれかの制限に一致する結果を得ることもできます。たとえば、次のような検索やゲームに関するコンテンツには、一致検索が適用されます。

[more:pagemap:product-description:search OR more:pagemap:product-description:game]

トークン化の例外の 1 つは、URL である属性値です。URL からのトークンは有効性が限られているため、有効な URL である属性値からトークンが生成されることはありません。

短いトークンが頻繁に見つかる場合など、プログラム可能検索エンジンでは、これらのトークンを組み合わせてスーパートークンが作成されることがあります。たとえば、トークン「P 大統領」と「オバマ」が隣り合って頻繁に表示される場合、プログラム可能検索エンジンによってスーパートークン「pident_obama」が作成されます。その結果、[more:pagemap:leaders-name:president_obama][more:pagemap:leaders-name:president AND more:pagemap:leaders-name:obama] と同じ結果を返します。

句読点に基づくトークン化のもう一つの主な例外は、スラッシュ('/')で番号を区切ることです。'NUMBER/NUMBER' または 'NUMBER/NUMBER/NUMBER' の形式の属性値は、連続する 1 つのトークンとして扱われます。たとえば、'3.5/5.0' と '09/23/2006' は、単一のトークンとして扱われます。たとえば、'2006/09/23' という値の属性を検索するには、次の制限を使用します。

[more:pagemap:birth-date:2006/09/23]

スラッシュに基づく結合は、スラッシュがスペースなしの数値間にある場合にのみ機能します。スラッシュと数値の間のスペースにより、個別のトークンが作成されます。また、スラッシュで結合した数値は正確に一致している必要があります。属性によるフィルタ演算子では、これらの値は分数や日付として解釈されません。プログラム可能な検索エンジンのその他の構造化演算子(属性別に並べ替え範囲に制限など)では、これらの数値が分数や日付として解釈されます。詳しくは、構造化データを提供するをご覧ください。

トップへ戻る

JSON-LD の制限

JSON-LD は構造化データ用の強力かつ標準的な形式です。データは JSON としてフォーマットされ、type="application/ld+json" が指定された <script> タグに配置されます。

シンプルな JSON-LD で HTML の最小サイズを以下に示します。

<script type="application/ld+json">
      {
        "@id": "http://event.example.com/events/presenting-foo",
        "@type": "http://schema.org/AggregateRating",
        "http://schema.org/ratingCount": "22",
        "http://schema.org/ratingValue": "4.4",
        "http://schema.org/itemReviewed": {
          "@type": "http://schema.org/Event",
          "http://schema.org/description": "Please attend.",
          "http://schema.org/name": "Presenting Foo",
          "http://schema.org/startdate": "2022-05-24",
          "http://schema.org/location": "Back room"
        }
      }
</script>

次の制限が生成されます。

  • more:pagemap:aggregaterating-ratingcount:22
  • more:pagemap:aggregaterating-ratingvalue:4.4
  • more:pagemap:aggregate-itemreviewed-event-description:please_attend
  • more:pagemap:aggregaterating-itemreviewed-event-description:Please
  • more:pagemap:aggregate-itemreviewed-event-description:attend
  • more:pagemap:aggregate-itemreviewed-event-name:presenting_foo
  • more:pagemap:aggregaterating-itemreviewed-event-name:presenting
  • more:pagemap:aggregaterating-itemreviewed-event-name:foo
  • more:pagemap:aggregate-itemreviewed-event-startdate:2022-05-24
  • more:pagemap:aggregate-itemreviewed-event-location:back_room
  • more:pagemap:aggregate-itemreviewed-event-location:back
  • more:pagemap:aggregate-itemreviewed-event-location:room

JSON-LD の場合、ルートのパス全体に対する制限のみが生成されます。ブランチでフィルタするをご覧ください。 ただし、JSON-LD ツリーのルートには子としてリーフノードがあり、結果として得られる制限は属性の制限と同じ形式になっています。上記の例の制限のいくつかは、ルートのリーフノードから形成され、属性制限(type-name-value)の形式になっています。例: more:pagemap:aggregaterating-ratingcount:22

注: 他の構造化データ形式の場合、最大 128 バイトの文字列を指定できますが、JSON-LD の場合はすべての文字列が約 50 文字で切り捨てられるため、文字列の途中で単語を終わらせることのないようにしてください。単語の長さによっては、文字列から生成されるトークンの数が、トークンの上限(10 個)よりも厳密に制限されることがあります。

トップへ戻る

属性で並べ替え

検索対象を特定の検索結果タイプに制限するだけでは不十分な場合もあります。たとえば、レストランのクチコミを検索する場合は、評価の高いレストランをリストの一番上に表示します。これは、プログラム可能検索エンジンの「属性による並べ替え」機能を使用することで実現できます。この機能は、構造化データ属性の値に基づいて結果の順序を変更します。並べ替えを有効にするには、プログラム可能検索エンジンのリクエスト URL に &sort=TYPE-NAME:DIRECTION URL パラメータを追加します。属性による並べ替えと同様、属性による並べ替えは、ページ上の構造化データに依存します。ただし、構造化データとは異なり、並べ替えを行うには、数値や日付などの解釈をフィールドで行う必要があります。

最も簡単な形式では、PageMap のデータ オブジェクト タイプと属性名に基づいて構造化データタイプを指定し、&sort=TYPE-NAME としてリクエスト URL に追加します。たとえば、データをタイプ date および名前 sdate として表現しているページの日付で並べ替えるには、次の構文を使用します。

https://www.google.com/cse?cx=000525776413497593842:aooj-2z_jjm&q=comic+con&sort=date-sdate

デフォルトでは、降順でハード並べ替えが行われます。つまり、検索結果は日付順で並べ替えられ、最も新しい日付が最大の日付から順に並べられます。並べ替え順序を昇順に変更するには、フィールドに :a を追加します(または、降順を明示的に指定するには :d を追加します)。たとえば、最も古い結果を最初に表示するには、次の形式の制限を使用します。

https://www.google.com/cse?cx=000525776413497593842:aooj-2z_jjm&q=comic+con&sort=date-sdate:a

エンジンから並べ替えられた結果は、それらの DataObject と属性の PageMap にある値に基づいて表示されます。PageMaps、DataObject タイプ、または属性の解析可能な値がないページは、ハード 並べ替えでは表示されません。上記の例では、date-sdate 属性のないページは結果に表示されません。ハード 並べ替えは、次のセクションで説明する属性によるバイアス機能と組み合わせることはできませんが、属性でフィルタ範囲に制限と組み合わせることができます。

トップへ戻る

属性別のバイアス

価値のない結果は除外したくない場合があります。たとえば、レバノン料理を検索する場合などです。純粋なレバノン料理(最も関連性が高い)からギリシャ語(最も関連性が低い)まで、さまざまなレストランが一致する場合があります。この場合、強いバイアスまたは弱いバイアスを使用して、値があるが、それがない結果は除外されます。強いバイアスまたは弱いバイアスを指定するには、並べ替えの方向の後に 2 番目の値を追加します。&sort=TYPE-NAME:DIRECTION:STRENGTH は、強バイアスの場合は :s、弱バイアスの場合は :w です(ハード バイアスの場合は :h、ただし、デフォルトは :h は省略可能です)。たとえば、強いバイアスを追加すれば、評価の最も高い地中海料理レストランは、評価が最も低い地中海料理レストランよりパフォーマンスが高くなり、レバノン料理のレストランでは完全一致から除外される可能性が低くなります。

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=review-rating:d:s

複数のバイアスは、カンマ演算子を使用して組み合わせることができます。

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=review-rating:d:s,review-pricerange:d:w

バイアスの順序は重要ではありません。ただし、ハード並べ替えは厳密な順序付けが行われるため、他の並べ替えと組み合わせることはできません。リストの最後の並べ替え演算子を指定すると、それより前の並べ替え演算子とバイアス演算子がすべてオーバーライドされます。

トップへ戻る

範囲に制限

特定の値の範囲、または指定した値の範囲内の結果を含めるには、範囲の制限を使用します。範囲制限は、属性名に付加される :r の後に、属性値の上限と下限 &sort=TYPE-NAME:r:LOWER:UPPER を付けて指定します。たとえば、2009 年 3 月から 4 月にかけて投稿されたレビューのみを含めるには、次の範囲制限を指定します。

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=review-date:r:20090301:20090430

[範囲に限定] 演算子を使用する場合、Google では浮動小数点数形式の日付と ISO 8601 YYYYMMDD をダッシュなしでサポートします。

上限または下限を指定する必要はありません。たとえば、2009 年より前の日付のみを指定するには、次のように記述します。

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=review-date:r::20091231

3 つ星以上の評価のみを含めるには、次のように記述します。

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=rating-stars:r:3.0

範囲は含まれますが、カンマ演算子と一緒に、または 1 つ以上の並べ替え条件か 1 つ以上のバイアス条件と組み合わせて使用できます。範囲制限を並べ替えとバイアス基準の両方と組み合わせると、範囲内の値を持つアイテムの並べ替えのみが行われます。たとえば、3 つ以上の星を含むアイテムで評価を並べ替えるには、次のように記述します。

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=rating-stars,rating-stars:r:3.0

1 つの条件に基づいて並べ替えることができ、別の条件で範囲を指定できます。 たとえば、10 月にレビューされたアイテムのみを評価する場合は、次のように指定します。

https://www.google.com/cse?cx=12345:example&q=lebanese+restaurant&sort=rating-stars,review-date:r:20101001:20101031

画像検索

検索エンジンの画像検索を有効にすると、Google の画像検索結果が別のタブに表示されます。画像検索を有効にするには、プログラム可能検索エンジンのコントロール パネルを使用するか、context.xml ファイルを更新します。

画像検索は、Google がサイトをクロールする際に検出した情報に基づきます。プログラム可能な検索エンジンと Google ウェブ検索の両方で画像が適切に表示されるよう、Google の画像公開ガイドラインについて理解を深めることをおすすめします。

画像属性でフィルタ

ウェブ検索と同様に、画像検索では srcalttitle などの属性でフィルタリングできます。

トップへ戻る

プログラム可能な検索要素の構造化検索

構造化検索機能は、Google のプログラム可能な検索要素と組み合わせて使用することもできます。クエリまたは URL パラメータで記述される演算子と同様に、要素の構造化検索ではまず、検索するページが検索対象の属性でマークアップされている必要があります。その後、プログラム可能検索要素の sort 演算子がクエリ内の more:pagemap: 演算子と組み合わせて、検索結果が適切に並べ替えられるか、制限されます。

たとえば、カリフォルニア州のニュース ポータルである SignOnSanDiego.com は、プログラム可能検索要素を使用して、結果に写真を含む最近のニュースを表示します。

読者に最も関連性の高いニュースだけでなくタイムリーなニュースも表示できるように、SignOnSanDiego は最近の出版日に向けた重み付けで属性別のバイアスを使用しています。SignOnSanDiego は、PageMap を使用してこれらの日付属性を実装します。SignOnSanDiego が使用する属性は、次のようになります。

<!--
  <PageMap>
    <DataObject type="date">
      <Attribute name="displaydate" value="Wednesday, August 25, 2010"/>
      <Attribute name="sdate" value="20100825"/>
    </DataObject>

    <DataObject type="thumbnail">
      <Attribute name="src" value="http://media.signonsandiego.com/img/photos/2010/08/25/635a63e9-f4a1-45aa-835a-ebee666b82e0news.ap.org_t100.jpg"/>
      <Attribute name="width" value="100"/>
    </DataObject>
  </PageMap>
  -->

このフィールドに Sort を属性で適用するには、次のようにプログラム可能検索要素の検索コードで sort オプションを設定します。

...
<div class="gcse-search" sort_by="date-sdate:d:s"></div>
...

上記の URL &sort= パラメータと同様に、プログラム可能検索要素 <div class="gcse-search" sort_by="date-sdate:d:s"></div> の並べ替えオプションでは、属性名の組み合わせ(date-sdate など)と複数のオプション パラメータをコロンで区切って入力します。この場合、SignOnSanDiego は演算子の強いバイアス s フレーバーを使用して d の降順で並べ替えることを指定しています。修飾子を指定しない場合は、デフォルトで URL 演算子の場合と同様に降順で並べ替えられます。

並べ替えのオプションでも、範囲による制限機能が有効になります。たとえば、SignOnSanDiego などのサイトでは、2010 年 8 月 25 日から 9 月 9 日の間に公開された記事を検索できる可能性があります。これを実装するには、並べ替えオプションを date-sdate:r:20100825:20100907 に設定します。この場合も、組み合わせた属性名 date-sdate が使用されますが、代わりに指定値 20100825:20100907 の範囲 r に制限されます。URL パラメータと同様に、プログラム可能検索要素の sort オプションでは、範囲の上下の項目を省略できます。

並べ替えオプションのもう一つの強力な機能として、属性による並べ替えと範囲による並べ替えを組み合わせることができます。並べ替えオプションでは、カンマを使用して複数の演算子を組み合わせることができます。たとえば、SignOnSanDiego の強いバイアスと上記の期間制限を組み合わせるには、date-sdate:d:s,date-sdate:r:20100825:20100907 を指定します。この機能は、異なる属性を組み合わせることができます。たとえば、映画レビュー サイトに、オプション review-rating,release-date:r:20100907: を使用して、過去 1 週間以内に公開された最も評価の高い映画を表示する場合があります。

サポートされているすべての属性については、こちらのページをご覧ください。

プログラム可能な検索の要素で属性別にフィルタすることもできます。 たとえば、linked-blog 属性を持つページを含む前の例では、次のコードを使用してリンクしたページのみを返すカスタム検索コントロールを作成して、すべてのクエリに more:pagemap:linked-blog:blogspot 演算子を挿入します。

...
<div class="gcse-search" webSearchQueryAddition="more:pagemap:linked-blog:blogspot"></div>
...

この方法では、このコントロールから発行されるすべてのクエリに制限が加えられるため、比較的柔軟性がありません。他のオプションを確認するには、プログラム可能検索要素のドキュメントをご覧ください。

トップへ戻る

その他の機能

構造化検索機能は、検索アプリケーションを細かく制御できる強力なオプション セットです。カスタム属性を使用すると、検索結果を並べ替えたりユーザーを制限したりできます。構造化検索は、カスタム結果スニペットなど、プログラム可能な検索エンジンの他の機能でも最適に機能します。詳細情報: