2007/05/25

検索エンジンってどんなもの?

検索エンジン」という言葉が、一般的に広く用いられるようになってひさしい。Yahoo! や Google が提供しているウェブ検索サービスのことを指示する場合がとても多い。別にそれだけが検索エンジンってわけじゃないけど、まあ代表格のようなものだから、これはこれでよしとする(きょうのところは)。「検索エンジンに登録されたら、うちのサイトも PV が上がっちゃって」……なんていうアレ。きょうはこのあたりについて簡単に説明しておこう(いろいろ書くにあたって、そろそろ簡単にでも説明しておかないと都合が悪くなってきた。。。)。

ウェブ検索のユーザに支配できる部分はごく一部に限られている。

  • キーワードを入力する
  • 検索ボタンをクリックする
  • 検索結果が表示される
    • ページタイトルや URL、ページコンテンツの抜粋を閲覧できる
    • ページタイトルや URL をクリックすると、そのサイトを閲覧できる
これを実現するためにどんなことが裏側でおこなわれているか……という話。ごく簡単に書くと、こんな感じ。
  1. 台帳に基づいて、クローラがいろんなウェブサイトを訪問して、ページ上のリンクをたどりながら、ページコンテンツを採取していく
  2. 採取されたページコンテンツは、URL を基準に整理され、分析される
  3. 採取されたページコンテンツのテキストデータは、形態素解析されて、インデックス(索引)化される(形態素解析しない場合もある)
  4. ユーザから与えられた検索文字列をインデックスに照らし合わせて、該当ページを抽出する
  5. 該当ページは、妥当だと思われる順番に並べ替えられて、検索結果として提供される
ざっくりとした説明なので抽象的なところも残っている。もう少し詳しく見ていこう。
  1. 台帳に基づいて、クローラがいろんなウェブサイトを訪問して、ページ上のリンクをたどりながら、ページコンテンツを採取していく
クローラの業務内容は比較的シンプルなイメージで説明できる。
  • ウェブページを開く
  • そのページを保存する
  • そのウェブページに書かれているリンクをたどって、別のページに行く
の繰り返し。どこから見ていくかということなんだけど、その元になるのが「台帳」。この「台帳」のことを「Seed」(種)と言う。イメージとしては、巨大なブックマークリスト……が近いだろうか。これを見ながら、次から次へとページを渡り歩いて、ページコンテンツ採取をコツコツとこなしていく。そうしてデータが集まってくると、
  1. 採取されたページコンテンツは、URL を基準に整理され、分析される
このページとあのページがリンクされているとか、外部のサイトにリンクしているとか、このページは他のページからどれぐらいリンクされているか(被リンク)……といったリンク構造や、ページの作成日(更新日)などの分析がおこなわれる(Google の有名な Page Rank の基礎データもここで取得できるものなんじゃないかな)。次に、
  1. 採取されたページコンテンツのテキストデータは、形態素解析されて、インデックス(索引)化される
どんな形態素解析処理(Cf. 「コンテンツ連動型広告の仕掛けを考える〜その弐」)をおこなっているのかは、検索結果ページからちょこっと見られたりする。Yahoo! JAPAN の場合だと、検索結果に「キャッシュ」っていう地味なリンクがあったりする(必ずあるわけじゃない)。そこを開いたときに、ページ上部にボックスが表示されて、そこに自分の入力したキーワードに何色かの背景色が付いて表示されているのを見たことがあるんじゃないかな(本記事の画像をクリックするとサンプルが見られる)。ユーザとしては、それを元に検索結果ページのどこにその文字列がどこに記述されているかが、背景色でハイライトされているので、見つけやすい……と言った用途に使うもの。実は、コレが形態素解析の結果。たとえば、「現代用語の基礎知識」だと、
  • 現代
  • 用語
  • 基礎
  • 知識
……と分解される。採取されたページコンテンツ(テキスト)は、こんな風にバラバラに解体されて、ウェブ検索のインデックス(索引)データとして利用されているわけだ。つまり、「現代用語の基礎知識」という検索文字列で検索した場合には、「現代」「用語」「の」「基礎」「知識」が含まれているページが検索されることになる。たまに「インデックスがアップデートされた!」というニュースが出たりする(SEO 業界を中心にちょっとした騒ぎになることもしばしば)けど、このインデックスの更新が意味するところは、ここで紹介したような内容(同時に新規ページのインデックスへの追加やなくなってしまったページのインデックスからの削除もおこなわれる)。

こうして索引ができて検索可能になった段階で、
  1. ユーザから与えられた検索文字列をインデックスに照らし合わせて、該当ページを抽出する
……ことになる。ココの部分が、狭義としての「検索エンジン」ってことになるんだろう。抽出すればそれでオシマイと言うわけではないのが難しいところ。いかにして、ユーザが探したいものを最短の時間、最小の労力で提供するかというのがサービスとしての検索の要となる。
  1. 該当ページは、妥当だと思われる順番に並べ替えられて、検索結果として提供される
……が重要となるわけだ。やはり単純にサービスを使う立場としては、いち早くお目当ての結果にたどりつきたい。「検索結果は、Google がいいね」とか「いや、Yahoo! も最近はかなりいいよ」とかそういう文脈で語られる良し悪しの多くは、ここの結果のアウトプットに起因する。大量の検索語でひとつひとつの検索結果を各社のサービスで調べて、一定のルールでそれらを評価すると、それなりの結論は出るようにも思うけど、ユーザの主観やそのときのユーザの意図によって印象は変わってきてしまうものではある。また、同じ会社のサービスであっても時期によって、チューニングが異なっていたりするので、一概にどこのサービスがいいというのは難しい。じゃあ、何をベースにチューニングするかということなんだけど、メジャーなものとしてはこんなものがある(個人的におもしろいなと思う順番に)。
  • どんなキーワードでそのページがリンクされているか
    有名な例としては、「18歳未満」で検索すると、Yahoo! JAPAN のトップページが上位にランクされる……というヤツ。アダルトサイトとかで「18歳未満はこちら」というテキストリンクが、Yahoo! JAPAN などに誘導するというケースが多い)
  • 検索キーワードの近接性
    「中華料理」での検索だったら、そのままズバリの「中華料理」と書かれているページの方が、ページのどこかに「中華」とか「料理」とかバラバラに記述されているものよりも関連度が高いだろうという考え
  • そのページがどれだけのページからリンクが張られているか
  • そのページがどれだけ人気のあるページからリンクが張られているか
    SEO 業者が「まずはYahoo! JAPAN のディレクトリ登録を」とオススメしてくる根拠
  • 検索キーワードのそのページでの扱われ方
    SEO のテクニックでよく言われる「H1 タグで囲まれていると評価が高い」……とか言うアレ
……などなど。どの要素をどれだけ重視するかというのがチューニング。SEO 業者は、その特徴を帰納法的に類推し、試行錯誤する。ランク上位表示を目指して、荒技(リンクファーム:Link Popularity を上げるためだけの意味のないリンクの張り合い)なんかで検索結果を荒らす者もいる。検索エンジン側でそうした行為を無にするような新たなチューニングを投入する……イタチごっこ。SEO 業者の日々の糧はそこにある。

0 件のコメント: