Web検索! メタサーチ Top 雑記と情報。Google サイト内検索窓を設置する方法


雑記と情報 検索エンジン情報など
│├複数の文字コードをform から CGI へ送信する方法
│├Google を利用したサイト内検索の設置方法
││└Google サイト内検索用タグの自動作成ツール
│├MSN を利用したサイト内検索の設置方法
│├Google電卓を利用した単位換算
│├検索フォームを自動作成する解析ツール
│├過去の Google 更新記録
│├Google データセンターの一覧
│├Google データセンター発見ツール
│└レガシーなページの処分場

Google を利用したサイト内検索窓 設置方法

その前に、独自ドメインですか?

Googleが独自ドメインとして扱う物はURLのスラッシュからスラッシュまでの間、つまり http://この範囲/ 「この範囲」の部分です。
ですから独自ドメインを取得していなくても ”http://自分のID.ホストのドメイン/” 等、エイリアスの場合も Google の検索システム上では独自ドメインとして扱われます。

ダメなのは http://ホストのドメイン/自分のアカウント/ の様に途中を/で切られてしまう場合です。
この場合はホスト下層のディレクトリーとして扱われます。

もしホスト側でどちらでも選択できるのであれば答えは明白ですね。
/から/の間で自サイトを特定できる方が何事にも絶対に有利です。

2003/07/16 にサイト内検索に使う為の Google フリー検索 (カスタマイズ版) の日本語ページがオープンしました。
独自ドメインのサイトは登録すれば検索結果に自社ロゴの表示や背景色の指定など、多様なカスタマイズが出来ます。
Googleが自社の宣伝効果を狙った物ですので、登録だけで無料で使えます。
独自ドメインのサイト(独自ドメインでなくてもエイリアス利用でも可)なら使わない手は無い!!

参照: Google にリンクする  よくある質問 -- Google フリー検索 (カスタマイズ版) : ウェブ検索

目的、他

Google(読み方 ×ゴーグル、◎グーグル)を利用して自サイト内専用の検索窓を設置する事を目的に、その方法を説明します。
検索結果を営利目的に利用しなければ自由に使えるはずです。(責任は持ちません)

サイト内検索窓を設置して検索できるのは Google が既にクロールしたページのみです。
Google は月にいちどインデックスを更新しますので、 先週作った様な新しいページや最近更新したページの語句は検索対象にはなりません。

検索出来るようになるまでには、3週間から2カ月程度かかります。
最近では、連日 Google のクロールが行われ仮のインデックスを付けるページも増えてはいますが、 不安定で数日で元に戻ったりします。 この現象は Google のフレッシュクロール(Fresh crawl)と俗に呼ばれています。
もし、自分のサイトが Google よりも MSN の方にインデックスされ易いと思われる場合は場合は MSN を利用して自サイト内検索窓を設置する方法 を参考にしてください。

これより先読むのは面倒だと思う方は、
Google サイト内検索用タグの自動作成ツール
を用意しましたのでご利用ください。

Google 検索窓を設置する

まず、Google の Google にリンクする と言うページから Google 検索窓用タグをコピーすると、下のような検索窓が出来ます。

<!-- Google -->
<center>
<FORM method=GET action="http://www.google.co.jp/search">
<TABLE bgcolor="#FFFFFF"><tr><td>
<A HREF="http://www.google.co.jp/">
<IMG SRC="http://www.google.com/logos/Logo_40wht.gif"
border="0" ALT="Google" align="absmiddle"></A>
<INPUT Type=text name=q size=31 maxlength=255 value="">
<INPUT type=hidden name=hl value="ja">
<INPUT type=submit name=btnG VALUE="Google 検索">
</td></tr></TABLE>
</FORM>
</center>
<!-- Google -->

文字コード対策の為下の2行を追加します。
<INPUT type="hidden" name="ie" value="Shift_JIS"> ← Googleが受け取る文字コード
<INPUT type="hidden" name="oe" value="Shift_JIS"> ← 検索結果を出力する文字コード

value="Shift_JIS の箇所は利用するページの文字コードに変更してください。

Google

上記は説明の為 <center> タグは外してあります

これで Google の検索窓は設置できました。

ページ先頭

パラメータを調べる

取り合えず必要なタグだけを取り出します。

フォームのパラメータ を引用符で囲まないのはHTML的にはおかしいので追加してあります

<FORM method="GET" action="http://www.google.co.jp/search">
<INPUT type="text" name="q" size=31 maxlength=255 value="">
<INPUT type="submit" name="btnG" value="Google 検索">
<INPUT type="hidden" name="hl" value="ja">
<INPUT type="hidden" name="ie" value="Shift_JIS">
<INPUT type="hidden" name="oe" value="Shift_JIS">
</FORM>

INPUT タグの name="**" の ** が Google Webサーバーの CGI に渡すパラメータで value="**" はその値です。

<INPUT type=text name="q" size=31 maxlength=255 value="">
この行は q と言うパラメータに窓から入力された value の値が入ると言う解釈が出来ます。

取り合えずこれだけでも検索窓は出来ますが、特定のサイト内だけを検索対象にする事はできません。

パラメータを調べる為に Google 検索オプション のページで検索対象にするドメインに yahoo.co.jp を指定しキーワード”cd”で検索を行い、 アドレスバーに表示されたものをコピーし、パラメータの直前で改行してみます。

Yahoo! Japan さん、勝手にネタにして御免なさい。

http://www.google.co.jp/search
?as_q=cd
&num=10
&hl=ja
&ie=UTF-8
&oe=UTF-8
&btnG=Google+%E6%A4%9C%E7%B4%A2
&as_epq=
&as_oq=
&as_eq=
&lr=
&as_ft=i
&as_filetype=
&as_qdr=all
&as_occt=any
&as_dt=i
&as_sitesearch=yahoo.co.jp

パラメータの右辺に何もないものは意味を持ちません。
大凡 num=10 と言うのが検索結果の表示数だと言う事は簡単に察しが付きますし、 最後の as_sitesearch=yahoo.co.jp が検索に指定したドメインだというのも判リます。

FORM 内に
<INPUT type=hidden name="num" value="20">
を加えれば、表示数が20になります、使える数は100以内なら何でも受け取ってくれますが、10、20、30、50、100、 の何れかにしておかなければ Google に嫌われるかも知れません。

特定のドメイン内だけを検索対象にする為には下記の一行
<INPUT type=hidden name="as_sitesearch" value="yahoo.co.jp">
を加えれば、yahoo.co.jp 内だけから検索を行います。

他のパラメータも条件を変えて検索を行えば as_epq はフレーズを含む場合で as_qdr は期日指定に使う物など色々判って来ます。

ついでに説明すると、INPUT の属性 type=hiddenhidden は、 画面上に表示されない隠れコントロールの事です。

ページ先頭

独自ドメインの Google サイト内検索

引き続き yahoo.co.jp を例にして話をすすめます。 先ほどのFORMに
<INPUT type=hidden name="as_sitesearch" value="yahoo.co.jp">
の一行を追加します。 実際に使う時は value="yahoo.co.jp"> の箇所を自分のドメイン名に変更します。

<FORM method="GET" action="http://www.google.co.jp/search">
<INPUT type="text" name="q" size=31 maxlength=255 value="">
<INPUT type="submit" name="btnG" value="Google 検索">
<INPUT type="hidden" name="hl" value="ja">
<INPUT type="hidden" name="as_sitesearch" value="yahoo.co.jp"> ←追加した行
<INPUT type="hidden" name="ie" value="Shift_JIS">
<INPUT type="hidden" name="oe" value="Shift_JIS">
</FORM>

yahoo.co.jp内を検索 as_sitesearch 追加


これでも悪くは無いのですが Google の方の検索窓に site:yahoo.co.jp と表示されてしまいます。
やって見て解ったのですが
<INPUT type=hidden name="as_sitesearch" value="yahoo.co.jp"> を
<INPUT type=hidden name="sitesearch" value="yahoo.co.jp"> に変更し
as_sitesearch の as_ を除いてやると上手く行くようです。

更にsitesearch を使った場合は上記のソースに下記の1行を書き加える事により検索結果のページに ドメイン名のラジオボタンにチェックを入れた状態で表示させる事が出来ます。

<INPUT type="hidden" name="domains" value="yahoo.co.jp">

yahoo.co.jp内を検索 sitesearch に変更し name="domains" value="yahoo.co.jp" を追加


ページ先頭

独自ドメイン以外の Google サイト内検索設置方法

as_sitesearchで指定できるのはドメインまでです。
企業や商売を行っている人以外、個人で独自ドメイン取得されている人の数はさほど多くは無いと思われます。
だからと言って、サイト内検索が出来ない訳では有りません。
方法は自分のサイト全ページに含まれる様な固有のキーワードを最初から INPUT に含めておいて、 そのキーワードと検索窓に入力されたキーワードの and 検索になるようにすれば良いはずです。

Google 検索パラメータの as_epq はURL 又はページ内に含まれる文字列を検索する為に使えます。
このサイトの URL に含まれるアカウント名を利用した例を下記に示します。

<FORM method="GET" action="http://www.google.co.jp/search">
<INPUT type="text" name="q" size=31 maxlength=255 value="">
<INPUT type="submit" name="btnG" value="Google 検索">
<INPUT type="hidden" name="hl" value="ja">
<INPUT type="hidden" name="sitesearch" value="hicat.ne.jp"> ←ドメインを変更
<INPUT type="hidden" name="domains" value="hicat.ne.jp"> ←ドメインを変更
<INPUT type="hidden" name="as_epq" value="tomcre"> ←追加した行
<INPUT type="hidden" name="ie" value="Shift_JIS">
<INPUT type="hidden" name="oe" value="Shift_JIS">
</FORM>

サイト内検索 powered by Google


この場合 as_epqas_ を除く事は出来ません。

上記ソースをコピーして朱色の部分を自分のドメインと固有のキーワードに書き換え、 余分な説明テキストを削除すれば出来上がりです。

この場合の問題点は検索時に表示される順位がやや曖昧になる点です。
理由は各ページに埋め込んだ固有のキーワドも検索表示順位を決定するアルゴリズムの中に組み込まれてしまいますので、 たとえ1ページに1つしか使って無いキーワドても他のテキストとの比率などの関係で最も適切な順番で表示されると言うわけには行きません。

2004/04/22: Google検索の仕様変更による文字化け対策

2004/04/22 Google検索のデフォルトの文字コードが UTF-8に変更されこれまでの検索窓では文字化けを起こしてしまいます。
この文字化けは明示的に文字コードを指定することで回避する事ができます。
具体的には下の2行を <FORM></FORM> 間に追加します。

<input type="hidden" name="ie" value="Shift_JIS"> ← Googleが受け取る文字コード
<input type="hidden" name="oe" value="Shift_JIS"> ← 検索結果を出力する文字コード

value="Shift_JIS" の箇所は利用するページの文字コードに変更してください。
出力側 <input type="hidden" name="oe" value="Shift_JIS"> は必要に応じて追加すれば良いでしょう。

詳細: Google検索の文字化け対策

その他の検索エンジンを使ったサイト内検索

Googleでインデックスされているページ数が少ないサイトの場合は他の検索エンジンでサイト内検索を行わせた方が良い結果となる場合も有るでしょう。

MSNの検索エンジンを利用する場合は
MSN を利用して自サイト内検索窓を設置する方法
を参考に捨てください。
但しMSNのインデックス数は余り多くなくサイトによっては全くインデックスされないといった場合もあります。

Yahoo! JAPANの検索エンジンを利用する場合は検索窓のソースを公開してあるページ内で”ドメイン内検索”の項目のソースを貼り付ければ上手く行きます。
Yahoo! JAPANの検索窓をサイトに設置するには

MooterにもWebとサイト内検索を切り替えて使えるソースが公開されています。
検索機能の追加

これらの検索窓は検索結果を営利目的で利用しようとするのでなければ許可やID等の取得の必要も無く誰でも自由に使えます。
検索窓のタグを多くのサイトが貼ってくれる事はそれだけ企業としての宣伝にもなるからです。

ページ先頭


Web検索!メタサーチ  MIDIとWMAで音楽  contact
Copyright (C) Web検索! メタサーチ, All rights reserved.