Home - shikencho.com - インターネット最強の検索術

ロボット系サーチエンジンの「ロボット」とは、定められた法則に従ってWebを巡回し情報を収集するプログラムである。ロボットには「スパイダー」とか「クローラー」と呼ばれるものもある。では、そのプログラムは一体何をしているのか。その振る舞いを理解せずにロボット系サーチエンジンを100%使いこなすことは不可能である。ロボットの行動を知ることでサーチエンジンで「やっても無駄なこと」がわかってくる。

ロボットによるクロール

ロボットによるWebの情報収集行動をクロールという。ロボットによるクロールの手順を少し解説しておこう。

ロボットはまずあるURLを出発点としてそのページからリンクされているページに移動し、そのページのテキスト情報を収集する。次にそのページからリンクされている同サイト内のページに移動し、そのページのテキスト情報を収集する。さらにそのページからのリンクを辿り...、の繰り返しでロボットはページのテキスト情報を収集していくのである。ただし、あまりリンクの深追いをするとリンクの無限ループにはまることがあるので、各ロボットの仕様によりどれだけ奥のページを探るかは決められているようである。ある程度のそのサイトの情報収集が終わるとそこからの外部サイトへのリンクを利用して、ロボットは次のサイトに向かうことになる。

このように、サーチエンジンのロボットはリンクを辿りながら情報を収集しているわけであるから、逆にロボット系のサーチエンジンで検索できないページというものの特徴もわかってくる。

逆に色々なサイトからリンクされている人気の高いサイトならば、ロボットでクロールされる可能性が高いので、サーチエンジンサイトに登録依頼を出さなくても検索結果リストに現れることになるのである。

なお、ロボットのクロールの情報収集対象のテキストは、ページタイトル、本文のテキストの他にHTMLのコメント()の内容も含まれている。検索結果リストから目的のページに飛んでもキーワードとして設定した単語が見られないページがある場合は、ためしにそのページのソースを見てみよう。HTMLのコメントの中にそのキーワードが隠れている場合があるのだ。逆にサイトの運営者としてはこのロボットの性格を利用することもできる。つまり、「こんなキーワードで検索されたい」という単語をHTMLのコメントの中に記述しておくのである。

クロールの頻度とロボット系サーチエンジンの弱点

まず確認しておきたいのは、ロボット系のサーチエンジンはWebの「現在」を検索しているわけではないということである。利用者が検索語を入力してボタンをクリックした瞬間にサーチエンジンが起こす行動は、現在のWebを巡回して検索語を探しにいくのではなく、自前のサーバに構築されたWebに関するデータベースを見に行って、そこからのデータを一覧にして表示しているにすぎない。データベースが作られた時期、すなわちWebの「過去」の状態を検索しているのである。では、サーチエンジンはどの程度の過去の世界を見ているのか。これがクロールの頻度とその範囲に関係していることになる。

ロボットのクロールの頻度はサーチエンジンによりまちまちでありその情報も一般には公開されていないので、検索結果の様子を見て想像するしかないのだが、頻繁にクロールするもので一週間、普通は二週間から一ヶ月に一度のクロールのようである。また、クロールとテキスト情報のデータベース化の負担を軽くするために、クロールの範囲を分割しているようである。あるサーチエンジンでは、情報が頻繁に更新されるサイトについては毎週、そうでないサイトについては一ヶ月に一度かそれ以上の間隔を開けてクロールに行くという操作をしているらしい。(サーチエンジンによっては数ヶ月もクロールに行かずにデータベースを更新していないものもある)

つまり、ロボット系のサーチエンジンが検索結果として提示するリストは新しくても一週間~一ヶ月前のWebの状況であると考えておかなければならないのである。これが「最新情報に弱い」というサーチエンジンの弱点なのである。新聞やテレビで気になる情報があり、それをインターネットで調べようとしてサーチエンジンを使っても「無駄」というものである。

日本語形態素解析

ロボットがクロールをした後にする作業が、集めたテキスト情報のデータベース化である。より高速な検索結果リストを出力するために日本語テキストを解析し、検索の対象となる単語レベルに分割して検索用のインデックスファイルを作成する。この単語レベルへの分割作業が「形態素解析」と呼ばれるものである。

例えばWeb上に次のような文章があったとしよう。

サーチエンジンのプログラムは独自の日本語辞書によりこれを次のような単語レベルに分割することになる。

この単語一つひとつ(およびそれらのセット)が検索語と一致したときに、要求されたページに適合すると判断して検索結果リストに加えるのである。

では、次の文章はどうだろうか。

a)とb)の違いは「サーバ」→「サーバー」の部分だけである。b)の場合、サーチエンジンの日本語形態素解析のプログラムは「サーバー」を一つの意味ある単語として認識し、それを検索語の対象とする。つまりb)の場合は音引きのない「サーバ」で検索しても単語レベルでは一致しないと判断して、検索結果リストには加えられないケースがあるのである。

同様に「旅」という1文字では「旅行」と書かれたページは検索できないし、「米」では「米国」は検索されないのである。

この様子は「goo」で顕著に現れる。

  1. 「米」 → 検索結果 116,685件
  2. 「米国」 → 検索結果 188,193件
  3. 「米 AND 米国」 → 検索結果 23,838件
  4. 「米 OR 米国」 → 検索結果 281,089件

おおよそ「(1)+(2)-(3)=(4)」の関係が成立している。つまりgooは「米」と「米国」をまったく別の単語として扱っているのである。

eXTReMe Tracker
shikencho.com