Google カスタム検索には、次の2つがあります。
エディション | 対象 | 料金 | 広告 |
---|---|---|---|
スタンダード エディション | ウェブサイト/ブログ向け | 無料 | あり |
企業向け | 年間 100米ドルから | なし |
スタンダード エディションでは検索結果に広告が表示されますが、検索向けAdSenseを利用することで、この広告から収益を得ることができます。
カスタム検索の概要については、Getting Started - Custom Search | Google Developersが詳しいです。
カスタム検索エンジンは、Google カスタム検索 コントロールパネルから作成できます。ただしAdSenseによる収益化を望むならば、そこではなく、検索向けAdSenseで作成します。
検索対象のサイトの追加時に[サイトを一括追加]を選択すると、複数のサイトを一括して登録できます。このとき個別に追加する場合と説明が異なりますが、それぞれ次のように対応します。
カスタム検索エンジンIDは、コントロールパネルの【検索エンジンの編集 → 設定 → 基本 → 詳細】で確認できます。
ちなみにこのIDは、ユーザIDと検索エンジンIDをコロンで連結して作成されています。たとえば次の場合、
000000000:xxxxxxxx
000000000
※1xxxxxxxx
のように構成されています。
※1 検索向けAdSenseで作成した検索エンジンは、「partner-pub-」から始まるIDとなります。カスタム検索エンジンの仕様は、Googleにログインした状態で
GEThttp://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
カスタム検索エンジンでよく使用されるクエリは、
GEThttp://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_IDとCSE_IDは、前述のものと同じです。termは取得対象とする期間で、
を指定できます。レスポンスは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_IDとCSE_IDを確認します。
パスの末尾に「/js」を追加することで、レスポンスをJSONで取得できます。
GEThttp://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サイト内 |
現在は次の6種類があります。
結果の表示 | |
---|---|
全幅 | 同一ページに大きく表示 |
コンパクト | 同一ページに小さく表示 |
2列 | 同一ページに2列で表示 |
2ページ | 別ページ (従来の「iframe」に相当) |
Results only | 別ページ |
Google-hosted | Googleサイト内 (従来の「Google」に相当) |
Google カスタム検索エンジンには、検索エンジンの詳細設定の保存場所によって次の2つがあります。
コンポーネント | 内容 | ファイル形式 |
---|---|---|
コンテキスト | 検索エンジン全体の定義 | XML形式 |
アノテーション | 検索対象とするサイトのリスト | TSV形式、XML形式 |
カスタム検索のコントロールパネルから設定するか、設定を記述したXMLファイルをGoogleにアップロードします。
検索エンジンの詳細設定を記述したファイルへリンクします。
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>
Custom Search APIを使用します。
検索ボックスを表示するページに、次のコードを記述します。
<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&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>
カスタム検索の広告から収益を得るには、
の2つの方法がありますが、特別な理由がなければ「検索向けAdSense」から検索エンジンを作成します。検索向けAdSense とカスタム検索の違い - AdSense ヘルプ
なお「検索向けAdSense」から作成したカスタム検索エンジンには、「partner-pub-」から始まるカスタム検索エンジンIDが付けられます。また管理ページの検索エンジンの一覧では、エディションが「パートナー カスタム検索エンジン」となります。
Googleでは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&lang=ja"></script>
cofの値によって、下表のように広告が表示される位置が決定されます。
cofの値 | 広告を表示する場所 |
---|---|
FORID:9 | 右 |
FORID:10 | 上と右 |
FORID:11 | 上と下 |
作成済みのカスタム検索エンジンをAdSenseアカウントに関連付けるには、カスタム検索の管理ページの[設定] → [広告設定]から行えます。AdSense で収益を上げる - カスタム検索 ヘルプ
カスタム検索エンジンをGoogle Analyticsのプロファイルに関連付けることで、その検索エンジンの利用状況についての追加の情報を得られます。
カスタム検索の管理ページでの設定画面
Google Analyticsでの設定画面