Google カスタム検索

管理ページ

カスタム検索 - 検索エンジンの編集

カスタム検索の種類

Google カスタム検索には、次の2つがあります。

エディション 対象 料金 広告
スタンダード エディション ウェブサイト/ブログ向け 無料 あり
Site Search 企業向け 年間 100米ドルから なし

スタンダード エディションでは検索結果に広告が表示されますが、検索向けAdSenseを利用することで、この広告から収益を得ることができます。

カスタム検索の概要については、Getting Started - Custom Search | Google Developersが詳しいです。

カスタム検索エンジン (Custom Search Engine : CSE)

カスタム検索エンジンは、Google カスタム検索 コントロールパネルから作成できます。ただしAdSenseによる収益化を望むならば、そこではなく、検索向けAdSenseで作成します。

検索するサイト

検索対象のサイトの追加時に[サイトを一括追加]を選択すると、複数のサイトを一括して登録できます。このとき個別に追加する場合と説明が異なりますが、それぞれ次のように対応します。

  • これらのサイトのすべてのページを追加 … URLにパターンを意味する「*」が含まれていなければ、「アドレスにこのURLを含むすべてのページを追加」と同じ。さもなくばこの指定は無視され、もう一方の設定と同様に処理される。
  • 入力した特定のページのみを追加します。 … 「このページ、または入力したURLパターンのみを追加」と同じ。
検索エンジンに含めるサイトの選択 - カスタム検索 ヘルプ

カスタム検索エンジンID (Custom Search engine ID)

カスタム検索エンジンIDは、コントロールパネルの【検索エンジンの編集 → 設定 → 基本 → 詳細】で確認できます。

ちなみにこのIDは、ユーザIDと検索エンジンIDをコロンで連結して作成されています。たとえば次の場合、

000000000:xxxxxxxx

のように構成されています。

※1 検索向けAdSenseで作成した検索エンジンは、「partner-pub-」から始まるIDとなります。

カスタム検索エンジンの仕様

カスタム検索エンジンの仕様は、Googleにログインした状態で

GET http://www.google.com/cse/api/<USER_ID>/cse/<CSE_ID>
GET http://cse.google.com/cse/api/<USER_ID>/cse/<CSE_ID>

のようにGETでリクエストすることで取得できます。このとき、

であり、レスポンスは次のようなXMLファイルで返されます。

<?xml version="1.0" encoding="UTF-8"?>
<CustomSearchEngine id="CSE_ID" creator="*********************" language="ja" encoding="UTF-8" autocompletions="true">
  <Title>コンピュータ用語辞典</Title>
  <Context>
    <Facet>
      <FacetItem>
        <Label name="it用語辞典_e-words" mode="FILTER">
          <Rewrite/>
        </Label>
        <Title>IT用語辞典 e-Words</Title>
      </FacetItem>
    </Facet>
    ...
    <BackgroundLabels>
      <Label name="_cse_CSE_ID" mode="FILTER"/>
      <Label name="_cse_exclude_CSE_ID" mode="ELIMINATE"/>
    </BackgroundLabels>
  </Context>
  <LookAndFeel code="4" nonprofit="false" googlebranding="watermark" element_layout="4" theme="7" custom_theme="false" text_font="Arial, sans-serif" url_length="full" enable_cse_thumbnail="true" promotion_url_length="full" ads_layout="1">
    <Logo/>
    <Colors url="#009933" background="#FFFFFF" border="#FFFFFF" title="#1155CC" text="#333333" visited="#1155CC" title_hover="#1155CC" title_active="#1155CC"/>
    <Promotions title_color="#1155CC" title_visited_color="#1155CC" url_color="#009933" background_color="#F6F6F6" border_color="#F6F6F6" snippet_color="#333333" title_hover_color="#1155CC" title_active_color="#1155CC"/>
    <SearchControls input_border_color="#D9D9D9" button_border_color="#2F5BB7" button_background_color="#357AE8" tab_border_color="#CCCCCC" tab_background_color="#FFFFFF" tab_selected_border_color="#CCCCCC" tab_selected_background_color="#FFFFFF"/>
    <Results border_color="#FFFFFF" border_hover_color="#FFFFFF" background_color="#FFFFFF" background_hover_color="#FFFFFF" ads_background_color="#FDF6E5" ads_border_color="#FDF6E5"/>
  </LookAndFeel>
  <AdSense>
    <Client id="pub-****************"/>
  </AdSense>
  <EnterpriseAccount/>
  <commerce_search_security_setting/>
  <autocomplete_settings match_mode="1"/>
  <sort_by_keys label="Relevance" key=""/>
  <sort_by_keys label="Date" key="date"/>
</CustomSearchEngine>
Custom Search API Developer's Guide - Custom Search | Google Developers

よく使用されるクエリ

カスタム検索エンジンでよく使用されるクエリは、

GET http://www.google.com/cse/api/<USER_ID>/cse/<CSE_ID>/queries?view=term
GET http://cse.google.com/cse/api/<USER_ID>/cse/<CSE_ID>/queries?view=term

から取得できます。USER_IDCSE_IDは、前述のものと同じです。termは取得対象とする期間で、

  • 日 … day
  • 週 … week
  • 月 … month
  • 年 … one_year
  • 全体 … overall

を指定できます。レスポンスはRDFで返されます。

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">
  <channel rdf:about="http://www.google.com/cse/cse?cx=USER_ID%3ACSE_ID">
    <title>サイト内検索 - よく使用されるクエリ</title>
    <description> 最もよく使用されるクエリ: サイト内検索 </description>
    <link> http://www.google.com/cse/cse?cx=USER_ID%3ACSE_ID </link>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://www.google.com/cse?cx=USER_ID%3ACSE_ID&q=foo"></rdf:li>
        <rdf:li rdf:resource="http://www.google.com/cse?cx=USER_ID%3ACSE_ID&q=bar"></rdf:li>
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="http://www.google.com/cse?cx=USER_ID%3ACSE_ID&q=foo">
    <title> foo </title>
    <link> http://www.google.com/cse?cx=USER_ID%3ACSE_ID&q=foo </link>
  </item>
  <item rdf:about="http://www.google.com/cse?cx=USER_ID%3ACSE_ID&q=bar">
    <title> bar </title>
    <link> http://www.google.com/cse?cx=USER_ID%3ACSE_ID&q=bar </link>
  </item>
</rdf:RDF>

期待する結果が得られず、「400. That’s an error. Your client has issued a malformed or illegal request. That’s all we know.」と返されるときには、termの指定に誤りがあるかもしれません。

申し訳ございません。リクエストされたページにアクセスできませんでした。」と返されるときには、USER_IDCSE_IDを確認します。

JSON形式で取得

パスの末尾に「/js」を追加することで、レスポンスをJSONで取得できます。

GET http://www.google.com/cse/api/<USER_ID>/cse/<CSE_ID>/queries/js?view=term
GET http://cse.google.com/cse/api/<USER_ID>/cse/<CSE_ID>/queries/js?view=term

管理ページで確認

よく使用されるクエリを知りたいだけならば、管理ページの[統計情報とログ]の[Stats]で確認できます。

検索結果の表示デザイン

従来は検索結果を表示するページによって、3種類に分類されていました。

従来のデザイン
  結果の表示
検索要素 同一ページ
iframe 別ページ
Google Googleサイト内

現在は次の6種類があります。

現在のデザイン
  結果の表示
全幅 同一ページに大きく表示
コンパクト 同一ページに小さく表示
2列 同一ページに2列で表示
2ページ 別ページ (従来の「iframe」に相当)
Results only 別ページ
Google-hosted Googleサイト内 (従来の「Google」に相当)

カスタム検索エンジンの種類

Google カスタム検索エンジンには、検索エンジンの詳細設定の保存場所によって次の2つがあります。

カスタム検索エンジンの主要コンポーネント
コンポーネント 内容 ファイル形式
コンテキスト 検索エンジン全体の定義 XML形式
アノテーション 検索対象とするサイトのリスト TSV形式、XML形式
The Basics - Custom Search | Google Developers

ホスト型カスタム検索エンジン (Google Stored CSE)

カスタム検索のコントロールパネルから設定するか、設定を記述したXMLファイルをGoogleにアップロードします。

コントロールパネル

  • 基本 (Basics)
  • サイト (Sites)
  • インデックス作成 (Indexing Attention!)
  • 絞り込み (Refinements)
  • プロモーション (Promotions)
  • 類義語 (Synonyms)
  • オートコンプリート (Autocompletions)
  • Google アナリティクス (Google Analytics)
  • デザイン (Look and feel)
  • コードの取得 (Get code)
  • 広告設定 (Make money)
  • 詳細設定 (Advanced)
  • 管理アカウント (Admin accounts)
  • 監査ログ (Audit Log)
  • プレビュー (Preview)
  • 統計データ (Statistics)

リンク型カスタム検索エンジン (Linked CSE)

検索エンジンの詳細設定を記述したファイルへリンクします。

ファイルの保存場所の指定方法

JavaScriptで記述する場合は、CustomSearchControlオブジェクトのコンストラクタで指定します。

google.search.CustomSearchControl(
    { 'crefUrl' : 'http://example.com/cse.xml' } );

<form>で記述する場合には、crefパラメータでファイルのURLを指定します。

<form id="cref" action="http://www.google.com/cse">
  <input type="hidden" name="cref" value="http://example.com/cse.xml" />
  <input type="text" name="q" size="40" />
  <input type="submit" name="sa" value="検索" />
</form>
<script type="text/javascript" src="http://www.google.com/cse/brand?form=cref"></script>

実装方法

JavaScriptによる実装

Custom Search APIを使用します。

<iframe>による実装

検索ボックスのコード

検索ボックスを表示するページに、次のコードを記述します。

<form action="http://cse.google.com/cse" id="searchbox-demo">
  <input type="hidden" name="cx" value="000000000:xxxxxxxx" />
  <input type="hidden" name="ie" value="utf-8" />
  <input type="hidden" name="hl" value="ja" />
  <input type="text" name="q" />
  <input type="submit" name="sa" value="検索" />
</form>
<script type="text/javascript"
  src="http://cse.google.com/cse/tools/onthefly?form=searchbox-demo&amp;lang=ja"></script>
パラメータ 説明
cref カスタム検索エンジンの詳細設定のURL Linked Custom Search Engines - Google Custom Search
cx 作成したカスタム検索エンジンのID
cof 広告を表示する位置
ie エンコード
hl 言語
q 検索語

検索結果のコード

検索結果を表示するページに、次のコードを記述します。

<div id="cse-search-results"></div>
<script type="text/javascript">
  var googleSearchIframeName = "cse-search-results"; // 結果を格納する要素のID
  var googleSearchFormName = "cse-search-box";       // 検索語を入力する要素のID
  var googleSearchFrameWidth = 600;                  // 結果フレームの幅
// var googleSearchFrameHeight = 300;                // 結果フレームの高さ
  var googleSearchDomain = "www.google.co.jp";       //
  var googleSearchPath = "/cse";                     //
</script>
<script type="text/javascript"
  src="http://www.google.com/afsonline/show_afs_search.js"></script>

検索向けAdSense (AdSense for search : AFS)

カスタム検索の広告から収益を得るには、

の2つの方法がありますが、特別な理由がなければ「検索向けAdSense」から検索エンジンを作成します。検索向けAdSense とカスタム検索の違い - AdSense ヘルプ

なお「検索向けAdSense」から作成したカスタム検索エンジンには、「partner-pub-」から始まるカスタム検索エンジンIDが付けられます。また管理ページの検索エンジンの一覧では、エディションが「パートナー カスタム検索エンジン」となります。

GoogleではAdSenseの誤クリックを防止するため、検索向けAdSenseを自身で利用しないことを推奨しています。自分のサイトの検索向け AdSense ボックスを使用して検索する - アカウントを適正に運営する - AdSense ヘルプ

AdSenseでのカスタム検索エンジンの作成方法 (検索向けAdSense)

AdSenseの管理ページで[広告の設定] → [検索] → [カスタム検索エンジン] → [新しいカスタム検索エンジン]とたどることで、AdSenseでカスタム検索エンジンを作成できます。

AdSenseで作成した「検索エンジン」の設定をカスタム検索で編集した後にAdSenseで編集すると、カスタム検索での設定がリセットされることがあります。

検索ボックスのコードの解説
<form id="cse-search-box" action="http://example.com/search/">
  <div>
    <input type="hidden" name="cx" value="partner-pub-000000000:xxxxxxxx" />
    <input type="hidden" name="cof" value="FORID:11" />
    <input type="hidden" name="ie" value="UTF-8" />
    <input type="text" name="q" size="31" />
    <input type="submit" name="sa" value="検索" />
  </div>
</form>
<script type="text/javascript" src="http://www.google.com/cse/brand?form=cse-search-box&amp;lang=ja"></script>

cofの値によって、下表のように広告が表示される位置が決定されます。

cofの値 広告を表示する場所
FORID:9
FORID:10 上と右
FORID:11 上と下

AdSenseアカウントとの関連付け (カスタム検索)

作成済みのカスタム検索エンジンをAdSenseアカウントに関連付けるには、カスタム検索の管理ページの[設定] → [広告設定]から行えます。AdSense で収益を上げる - カスタム検索 ヘルプ

Google Analyticsによる、カスタム検索の利用状況の確認

カスタム検索エンジンをGoogle Analyticsのプロファイルに関連付けることで、その検索エンジンの利用状況についての追加の情報を得られます。


カスタム検索の管理ページでの設定画面


Google Analyticsでの設定画面

複数の技術系サイトから、まとめて検索