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

概要

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

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

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

ウェブ検索

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

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

詳しくは、構造化データの指定をご覧ください

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

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

トップへ戻る

属性でフィルタ

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

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

属性でフィルタするには、検索クエリに more:pagemap:TYPE-NAME:VALUE 演算子を追加します。これにより、検索結果が、そのタイプ、名前、値と完全に一致する構造化データを含むページに限定されます。(プログラム可能検索エンジンでは、ページマップ データから始まり、JSON-LD、microformat、メタタグ、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 という Attribute を持つ document 型の DataObject を探すように指示します。この構造化データキーの後に lisamorton 値が続きます。この値は、この制限を含む検索で返される属性の値と完全に一致している必要があります。

more:p:document-author:lisamorton

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

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

「Irish AND フィクション」というクエリの結果を取得するには、次のように記述します。

more:p:document-keywords:irish*fiction

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

「Irish AND (フィクション OR ホラー)」の検索結果を取得するには、次のように記述します。

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 の制限が生成されます。

[属性によるフィルタ] または [ブランチによるフィルタ] とその他の機能を組み合わせて使用する

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

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

制限のテキスト値のトークン化

スペース、句読点、特殊文字を含む属性値はほとんどの場合、別々のトークンに分割されます。たとえば、「プログラム可能検索エンジン@google」の属性値は、「custom」、「search」、「google」という 3 つの別々のトークンに分割されます。これにより、作品の説明など、より大きな連続した単語や句読点に埋め込まれた 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 など)に対しては個別の制限が生成されませんが、したがって、検索の有用性は低くなります。そのため、テキスト値「the main points」は、mainpointthe_main_point の制限を生成しますが、the の制限は生成されません。
  • テキスト値の最初の 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 の属性値からはトークンが生成されません。

たとえば、短いトークンがよく一緒に見つかる場合、プログラム可能検索エンジンはそれらのトークンを組み合わせてスーパートークンを作成することがあります。たとえば、「Pident」と「Obama」のトークンが頻繁に隣り合わせに表示される場合、プログラム可能検索エンジンはスーパートークン「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」は、1 つのトークンとして扱われます。たとえば、値が「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:aggregaterating-itemreviewed-event-description:please_attend
  • more:pagemap:aggregaterating-itemreviewed-event-description:please
  • more:pagemap:aggregaterating-itemreviewed-event-description:attend
  • more:pagemap:aggregaterating-itemreviewed-event-name:presenting_foo
  • more:pagemap:aggregaterating-itemreviewed-event-name:presenting
  • more:pagemap:aggregaterating-itemreviewed-event-name:foo
  • more:pagemap:aggregaterating-itemreviewed-event-startdate:2022-05-24
  • more:pagemap:aggregaterating-itemreviewed-event-location:back_room
  • more:pagemap:aggregaterating-itemreviewed-event-location:back
  • more:pagemap:aggregaterating-itemreviewed-event-location:room

JSON-LD の場合は、ルートからパス全体に対する制限のみを生成します。ブランチでフィルタするをご覧ください。ただし、JSON-LD ツリーのルートには子としてリーフノードがあり、結果として得られる制限の形式は属性制限と同じになります。上記の例の制限の一部は、ルートのリーフノードから形成され、属性制限の(型名-値)形式をとります。例: 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 と Attribute について、それらのページの PageMap に保持されている値に基づいて表示されます。PageMaps、その DataObject タイプ、またはその Attribute の解析可能な値がないページは、厳格な並べ替えに表示されません。上記の例では、date-sdate 属性がないページは結果に表示されません。強制並べ替えは、次のセクションで説明する [属性によるバイアス] 機能と組み合わせることはできませんが、属性でフィルタ範囲に制限を組み合わせることができます。

トップへ戻る

属性別のバイアス

値のない検索結果を除外したくない場合もあります。たとえば、レバノン料理を検索したい場合、純粋なレバノン料理(最も関連性の高い)からギリシャ料理(最も関連性が低い)まで、さまざまなレストランが一致する場合があります。この場合、強いバイアスまたは弱いバイアスを使用できます。これは、自分の価値がある結果を強めたり弱めにプロモートしたりしますが、価値の低い結果を除外しません。強バイアスまたは弱バイアスを指定するには、並べ替え方向の後に 2 つ目の値 &sort=TYPE-NAME:DIRECTION:STRENGTH を追加します。強バイアスの場合は :s、弱バイアスの場合は :w、弱バイアスの場合は :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

「範囲を制限」演算子では、浮動小数点形式の数値と 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

条件を並べ替えたり、範囲で指定したりすることが可能です。 たとえば、10 月に審査されたアイテムのみの評価で並べ替えるには、次のように記述します。

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

画像検索

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

画像検索は、Google がサイトをクロールする際に検出した情報を利用します。検索結果での(プログラム可能検索エンジンと Google ウェブ検索の両方における)画像の表示方法を改善するには、Google の画像公開に関するガイドラインをよくお読みください。

画像属性でフィルタ

ウェブ検索と同様に、画像検索では srcalttitle などの属性によるフィルタリングがサポートされています。

トップへ戻る

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

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

たとえば、カリフォルニア州のニュース ポータルである SignOnSanDiego.com は、Programmable Search Element を使用して、写真付きの最近の記事を検索結果に表示します。

最も関連性の高いニュースだけでなくタイムリーなニュースも読者に確実に届けられるよう、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 オプションを設定します。

...
<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 オプションでは、範囲の上限値または下限値を省略できます。

並べ替えオプションのもう 1 つの優れた機能は、[属性で並べ替え] と [範囲で制限] を組み合わせることです。並べ替えオプションでは、カンマを使用して複数の演算子を組み合わせることができます。たとえば、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>
...

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

トップへ戻る

その他の機能

構造化検索機能は、検索アプリを細かく制御できる強力なオプションのセットです。カスタム属性を使用して、ユーザーが効率よく検索し、検索結果の順序付けや制限を行うことができます。構造化検索は、カスタムの結果スニペットなど、プログラム可能検索エンジンの他の機能ともうまく連携します。詳細情報: