Google カスタム検索の設置

informatics/html/google_searchbar
2018/11/04 更新

  1. コード作成
  2. html に変換 (Blue Griffon 最適化)
  3. 検索結果について
    • 登録できるページ数
    • Hub page の送信
    • 自動アップデート

  4. SSL ページにカスタム検索を置いたときの画像の問題 (別ページ)

広告

コードの作成

Google のカスタム検索には、無料の カスタム検索エンジン と、企業向け有料の Google Site Search がある (6)。ここでは、このサイトで使っているカスタム検索エンジンについてまとめる。

Google カスタム検索エンジンは、Google アカウントを持っていれば簡単に作ることができる (1,3)。文献 5 などを参考に、以下の 3 つのドメインに含まれるページが全て対象になるように設定している。サイト構造の詳細は サイトマップのページ に。


  • http://ultrabem.jimdo.com/
  • https://ultrabem.com/
  • https://ultrabem-branch3.com/

これは以下の囲みのなかでは一番上の項目に該当し、サイト内の全ての URL が含まれるようになる。


  • サイト www.example.com を追加します。このアノテーションには、www.example.com とその配下のすべての URL が含まれます。
  • URL www.example.com/monkeys.html を追加します。このアノテーションには、このページのみが含まれます。
  • URL パターン www.example.com/*monkeys を追加します。このアノテーションには、このドメイン下にあり URL に「monkeys」が含まれるすべてのページが含まれます。


html への変換 (BlueGriffon最適化)、CSS の編集

上記のコードは

<script>
  (function () {
    var cx = 'ここに ID が入ります';
    var gcse = document.createElement ('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
        '//www.google.com/cse/cse.js?cx=' + cx;
    var s = document.getElementsByTagName ('script')[0];
    s.parentNode.insertBefore (gcse, s);
  }) ();
</script>
<gcse:search></gcse:search>

のようになっている。Ultrabem 2 では一時期 BlueGriffon という html エディタ html editor を使っていて、このコードを貼ると編集中にエラーが出てしまう。何故だかいまいち不明だが、とりあえずわかるのは <script></script> となっていて Javascript を使っていること、最後の <gcse:search></gcse:search> が BlueGriffon の文法チェックに引っかかっていることだった。

そこで、文献 2 のようにしてこのコードを以下のように html に変換。

最初は <img src="http://www.google.com/cse/images/google_custom_search_smwide.gif" /> で読み込まれる Google のロゴも消してしまっていたが、どうも入れておかなければならないようだ。

<form id="cse-search-box" action="http://google.com/cse">
<input type="hidden" name="cx" value="
ここに ID が入ります" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="text" name="q" />
<input type="submit" name="sa" value="Search in this site" /></form>
<div style="text-align: right;"><img src="http://www.google.com/cse/images/google_custom_search_smwide.gif" /></div>

さらに文献 4 の CSS を改変してスタイルを設定させて頂いた。CSS の一部のみ転載。

#cse-search-box {
width: 252px !important;
float: right;
margin-top: 7px;
margin-right: 11px;
}

#cse-search-box table.gsc-search-box td.gsc-input {
padding: 0 !important;
}

文献 3 にも少し違う検索ボックスのコードが載っているが、

<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=ja"></script>

という部分の & が BlueGriffon の文法チェックでエラーになったため、このコードは使えなかった。


広告

検索結果について

検索結果は、以下のようなルールに基づいて表示されるようである。

  • もともと Google にインデックスされているページは、特に何もしなくても表示される。
  • Google にインデックスされていないページは、自分で登録すれば検索にひっかかるようになる。

Google カスタム検索のページで 「検索エンジンの編集 - インデックス登録 - 概要」という部分をみてみると、

Google 検索でインデックス登録されたページの概数: 500
使用中のインデックス割り当て数: 0 / 200
削除割り当て数: 0 / 20

と書かれている。一番上が、既に Google 検索でインデックスされているページの数であり、これは Google webmaster tool でサイトマップや hub page を送信すれば登録可能である。

2 番目は オンデマンドインデックス といい (6)、Google webmaster tool ではなく Google カスタム検索を通じて登録するインデックスである。無料では 200 個が上限とされている。当初は、以下のようにして hub page の URL を送信して登録したが、登録数に限りがあることから、現在は サイトマップ sitemap を Google webmaster tool に送信して登録している。こちらの方法が Google にも推奨されているようである。


登録できるページ数について

オンデマンドインデックスついては、無料では 200 個が上限である。年間 2,000 ドル払うと 10,000 個まで登録できるようになり、それ以上は問い合わせになる (8)。

少し解釈に迷うのは、カスタム検索エンジンに追加できるページ数 の説明だ。


カスタム検索エンジンの各アカウントには、5000 のアノテーションが割り当てられています。アノテーションは 1 つの URL または 1 つの URL パターンを表します。たとえば、次のいずれかを追加することでアノテーションを作成できます:

  • サイト www.example.com を追加します。このアノテーションには、www.example.com とその配下のすべての URL が含まれます。

仮に www.example.com という登録を「1 つのアノテーション」と考えてよければ、このサイトがたとえ 1 万個のページを含んでいても、それが「Google 検索でインデックス登録されたページの概数」の中に含まれている限りは、全てが検索対象となるはずである。

しかし、www.example.com 以下にある個別の URL が個々にアノテーションを消費すると考えれば、1 つのサイト内のページ数が 5000 を超えた時点で検索対象から外れると考えられる。

「URL パターン」がアノテーションなので、最初の解釈が正しい可能性が高い。この場合、5000 までのサイトを登録することができるので、事実上無数のページをカスタム検索に含められるということになるだろう。

一方、Google フォーラムには以下のような質問 – 回答例がある。リンクがうまく貼れないので要約・和訳しておく。


何個までサイトを追加できるのか? 上限はあるのか?

制限はないが、10 個以上になると検索の質が低下する。これは (2018 年現在で使用可能な) Standard Search Element, Non-profit Search Element, Custom Search JSON API, Custom Search Site Restricted JSON API の全てにおいてそうである。


ヘルプフォーラムを見渡してみると、この「上限なし」というのはおそらく間違いで、5000 まで URL を追加できるというのが正しそうである。検索の質が低下するかどうかについては、他に情報があればアップデートすることにする。


Hub page の送信

このサイトの全てのページへのリンクを含んでいる hub page を作り、その URL をカスタム検索のページから送信する。また、テストのために imrotate の URL を個別に送信。

これでしばらく待ってみると、まず imrotate が登録され、使用中のインデックス割り当て数が 1/200 になった。24 時間ほどでこれが 33/200 になり、hub page からのリンクが登録された。


自動アップデート

サイトを更新したときなど、Google のサイト内検索がどれぐらいの時間でアップデートされるのかについてのメモ。

  • 本家サイトのラットのページ、諸事情により URL を 12/15/2016 ごろに変更。カスタム検索から古いページがいつ消えるか? → 1 ヶ月後には消えていた。
  • 血液のページ、だいぶまえに作っていたが、内容が少なかったためかカスタム検索に引っかからなかった。内容が増えたらどうなるか? → 1 ヶ月後には検索されるようになっていた。

よって、少なくとも 1 ヶ月ぐらい経てば、変更の内容はサイト内検索に反映されるものと考えて良さそうだ。


コメント欄

フォーラムを作ったので、各ページにあるコメント欄のうち、コメントがついていないものは順次消していきます。今後はフォーラムをご利用下さい。管理人に直接質問したい場合は、下のバナーからブログへ移動してコメントをお願いします。


References

  1. ライターのつれづれ日記. Web.
  2. Google カスタム検索をHTMLに書き換える. Web.
  3. WordPressにGoogleカスタム検索バーを導入してみたのでその方法を解説します!  Web.
  4. Googleのカスタム検索バーを自分のサイトに合わせてカスタマイズする方法解説します!  Web.
  5. カスタム検索エンジンに追加できるページ数. Google help.
  6. オンデマンドインデックス登録の実用例. Google help.
  7. Google Site Search と Google カスタム検索. Google help.
  8. インデックス登録割り当て. Google help.