検索エンジンの仕組み

どうもかくたまナカノヒトです。

「敵を知り己を知れば百戦危うからず」ということで、SEO・コンテンツマーケティングを理解するためにも「検索エンジンの仕組み」をテーマに記事を書きたいとおもいます。 「そんなの知ってるよ」というSEO 萌えの方はスルーしてください。

Google の社是は「世界中の情報を整理し、世界中の人々がアクセスできて使えるようにすること」です。

社是に触れるのは野暮ですが、Google はこの使命を実現するために「Googlebot (グーグルボット)」 と呼ばれるプログラムで世界中のウェブサイトを巡回しデータベース化しています。 データベース化したコンテンツを素早く検索できるようにインデックス登録して索引をつくり、ランキングを付けて検索結果として表示しています。

規模は半端ないですが、仕組み自体は案外単純です。

Google は世界最高の検索エンジンですが文章の意味を理解する事はまだできません。

どのサイトが優れているかを「シグナル」と呼ばれる評価基準をもとに判断しています。シグナルは200以上あると噂されています。 シグナルを評価基準として「ユーザにとって価値があるか」を総合的に評価し、アルゴリズムによってスコアを算出してランキングを決めています。

以前は「ページランク」と呼ばれるランキングにも影響のあるスコアが公開されてましたが、2013年に更新されなくなり、2016年には参照することもできなくなりました。

ページランクとは? googol なの?

スタンフォード大学の学生だった数学オタクのラリー・ペイジとセルゲイ・ブリンが仲良くなり「リンクがたくさん貼られているページって重要じゃね?」という理論に基づきバックリンクを解析する Backrub という検索エンジンをつくります。

「たくさん引用されている=注目を浴びている」という被引用数のアルゴリズムは以前からあったもので、ラリー・ペイジとセルゲイ・ブリンは「引用=リンク」と置き換えウェブに応用させ独自の評価基準であるページランクをつくります。

1998年に執筆された2人の共著である検索エンジンの論文はスタンフォード大学のサイトで読むことができます。ページランクの計算方法と一緒にベットで読むと寝付きが良くなります。
Brin, S. and Page, L. (1998) The Anatomy of a Large-Scale Hypertextual Web Search Engine. 
Method for node ranking in a linked database

スペルミス説もありますが、10の100乗という意味の数学用語「googol」をもじって、検索エンジンの名前をBackrub から Google に改名します。 Google は検索結果の順位を決めるランキングのアルゴリズムを年間数百回という頻度で更新しており「世界中の人が快適にアクセスできて使いやすい」検索サービスの実現を目指しています。

サン・マイクロシステムズのアンディ・ベクトルシャイム、アマゾンのジェフ・ベゾスなどから出資を受け Google は爆速で成長します。 2000年に検索連動型の広告をスタート、2004年に株式公開し現在の地位を確立し、50ヶ国 60,000人の従業員を抱えるメガベンチャーとなります。

クローラとは?情報を収集します

クローラ(Crawler)とは、サイトの情報を定期的に収集して自動的にデータベースに保存するプログラムのことです。ボットとかスパイダーと呼ばれています。

Google は Googlebot などのウェブクローラを使って世界中のウェブサイトの文章・画像・動画などのデータを収集してデータベースに保存しています。 PC向け・モバイル向け、画像用・動画用・ニュース用などデバイスと用途によりGoogle のクローラは名称が少し違います。

以下がかくたまのウェブサーバの生ログです。
66.249.79.111 - - [28/Nov/2018:14:00:47 +0900] "GET / HTTP/1.1" 200 21084 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

このログは「2018年11月28日14時00分」にGoogle のIP アドレス「66.249.79.111」から Googlebot がやってきて、かくたまのトップページ「/」のデータを取得するために「GET」コマンドを送信して、21084 バイトのデータを無事に取得したことを示しています。 Googlebot はこんな感じでサイトにやってきて、内部リンクを辿りながら各ページの情報をコツコツ収集しています。

Googlebot にクロールされないと検索結果にサイトが表示されないです。 待っているだけだと Googlebot が来るまでに時間がかかるので、 Google Search Console を利用して URL を登録すると便利です。

Googlebot が気持ちよくサイトを巡回できるようにサイトの構造をわかりやすく整理することを「クローラビリティ」と言います。 テーマ毎に記事をまとめて URL の階層を整理して、Googlebot が詳細なページまで辿れるように内部リンクを構築することで クローラビリティ を向上させることができます。 また、リンク切れをなくしたりサイトマップを Google に送信することでもクローラビリティは向上します。

Google にどうみられるかというクローラビリティへの配慮はSEO 対策にとっても重要です。

インデックス登録とは?情報を整理します

クローラがデータベースに保存したコンテンツを検索しやすいように整理して見出しを付けてデータベースに保存することです。 インデックスはデータベースの分野では一般的な考え方で、検索用に索引をつくってデータを最適化することで検索速度を向上させる方法のひとつです。

Google はインデックス登録の際に、画像や動画データに付随したメタ情報をカタログとして作成してインデックスとして保存します。 インデックスには数千億ページが登録されており、1億ギガを超えるという何だかよくわからないデカさです。

2010年に Google の公式ブログで「Google Caffeine」に関する発表がありました。 Caffeine はインデックスを分割して更新することでインデックス登録の効率を飛躍的に向上させる技術です。

2012年から人・場所・物事・会社・作品などの属性を整理して、検索結果に表示させるナレッジグラフという機能が提供されています。 ナレッジグラフに対応するためのカタログの処理向上など、公開・非公開を問わずに関わらずインデクシングの技術を向上させるための開発に取り組んでいるそうです。

まとめ

長々と説明しましたが「サイトの情報を収集するのがクローラ」「コンテンツの内容をまとめるのがインデックス」とざっくり理解できたら十分です。 Search Console を利用してクロールとインデックスの状況をたまに確認して、リンク切れなどの問題が発生していたら対処できたら完璧です。

インデックスについてはGoogle の検索窓で「site:ドメイン名」と入力することでざっくりと確認することもできます。 今回説明した内容については、もっと分かりやすく本家に掲載されています。。。

[検索が情報を整理する仕組み] https://www.google.com/search/howsearchworks/crawling-indexing/