検索エンジンの仕組み
パソコンやスマホなどで何か調べ物をしようとするとき、
検索窓に調べたい文字を入力します。
このとき使用するフォーマットを「検索エンジン」といいます。
yahoo派やGoogle派など使い勝手や好みなどもあるとは思いますが、どちらで検索しても検索結果は同じようなものが出てくると思います。
そして検索順位(上からの並びの順位)もだいたい同じになっています。
実は、yahooの検索エンジンはGoogleと同じものです。というか、2011年からyahooはGoogleの検索エンジンを使用しています。
同時に検索すると若干順位に違いが生じますが、これはいつのタイミングでどのサーバーに接続するかでタイムラグが生じるからです。
世ぐの中ほとんどがGoogleになってきていますね。
とはいえ、yahooにしかないものも存在します。
例えば検索結果でいうと
yahooショッピング、yahoo知恵袋、NEVERまとめ(2020年9月30日終了予定)などがあり、「リアルタイム検索」もyahoo独自の検索エンジンに含まれていますね。
Web検索に関しては、事実上Googleが一強という感じです。
Googleの歴史
検索エンジンはGoogleが生まれてから大きく変化しました。
ですが、それだけではなくクラウドというものもGoogleが普及させた大元です。
Googleといえばラリー・ペイジですね。
※悪意はありません!
1995年にスタンフォード大学でラリー・ペイジとサーゲイ・ブリンが出会ったところからその歴史はスタートしています。
詳しい情報はこちらのサイトに掲載されています
この年表を見てみると、検索エンジンは1990年代の後半から現在の形に進化を遂げてきたことがわかります。
そしてその基礎となったものが3つあります。
- PageRank
- Google File System
- MapReduce
経済的には現在の広告モデルで、キーワードにお金を払うと広告が打てるというビジネスがうまくいったということがありますが
この3つがGoogleを成功へ導くものだったのではないでしょうか。
PageRank アルゴリズム
The Anatomy of a Large-Scale Hypertextual Web Search Engine
こちらの論文に詳しく書かれています。スタンフォード大学が公開しているものです。
ページランクとは文字を検索したときに上から表示される順位のことです。どのページを一番上にあげるかという順位のことです。
以前はそのページがどれくらい他からリンクを貼られているかで順位が決められていました。たくさんの人がリンクを貼っているサイトは重要なサイトであり、その重要なサイトがリンクを貼っているサイトはさらに重要なサイトである。というランキングがされていました。
また、検索した文字がたくさん入っているサイトが上位に入っていたという時期もあります。
現在はというと…
わかりません Googleはアルゴリズムを定期的に変更しており、有用なサイトが上位に表示されるようになっています。
上位に表示されるサイトがやはり閲覧されやすいです。webページを作成している人は上位を狙ってGoogleとのいたちごっこのような状態になっていますね。
とはいえ、私たちが何かを検索する際に適切にわかりやすいページへ導いてくれるシステムのことをPageRankといいます。
Wikipedia によると
名称の由来はwebページの「ページ」とGoogleの創設者のラリー・ペイジの姓をかけたものである。
Google File System
こちらの論文に詳しく書かれています。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Google File System(GFS、GoogleFS)は、Googleが自社のシステムのために開発した分散ファイルシステムである。大規模なデータセンターに特化した、効率的で信頼性の高いシステムとして設計されている
ファイルシステムというのはデータを呼び出したりバックアップしたりコピーしたりするシステムのことです。
webページやそのデータを管理するシステムのことで、巨大なオリンピック用のプールの中に色鉛筆を管理していて、赤が欲しいと要望されるとその要望に、正確に・迅速に応えてくれるシステムという感じです。
MapReduce
MapReduce: Simplified Data Processing on Large Clusters
こちらの論文に詳しく書かれています。
MapReduce(マップリデュース)は、コンピュータ機器のクラスター上での巨大なデータセットに対する分散コンピューティングを支援する目的で、Googleによって2004年に導入されたプログラミングモデルである。
アルゴリズム プログラミングのしかたのことです。
つまり、いろいろな仕事がたくさんあるのを一旦集めてくる(リデュース)そしてどこで、誰が、いつ処理をするかをマップでその担当のマシンに振り分ける。その振り分けた処理結果をまとめて、その問題に対しての答えを出す。
膨大なデータを処理する際に、最も効率が良いやりかたのことです。仕事を発注するシステムと仕事を集約して納品するシステムを分けるために設計されたアルゴリズムです。
多数のサーバを持っていれば、MapReduce を使いペタバイト級のデータの並べ替えをわずか数時間で行うことも可能である。
Googleってホントにすごいですね。
スマホやPCを毎日使う方は毎日お世話になっているのではないでしょうか。
ですが、このGoogleの独占を脅威に感じる人もいると思います。
特にPageRankなどは、昔は公開されたやり方でおこなっていましたが現在は非公開の部分が多くなっています。ブログやアフィリエイトなどで生計を立てている方にとっては死活問題です。
でも…
本当に公平・公正にランキングされてるの?
可愛い子はこっそり上位に上げたりしてるんじゃないの?
という情報操作に対して疑問を持ったのがDoug Cutting(ダグ・カッティング)さんでした。
カッティングさんが作ったのがオープンソースのWeb検索エンジンである「Nutch」というものです。
Nutch
有名なApache HTTPプロジェクトとして作られた検索エンジンです。
このNutchはGoogleと同じMapReduceのアルゴリズムがありGoogle File Systemのようなファイルシステムも 持っています。その他PageRankやクローラというwebページを取る仕組みもあります。
つまりこのNutchをインストールすれば、誰でもGoogleと同じような検索エンジンをつくることができます。
目指せ!ラリー・ペイジ!
ただし…
世界中のデータを取ってくるには巨大なハードディスクが必要となります。
でも…Botでデータを集めるだけであれば、日本語だけのデータなら10テラバイトくらいで可能です。1か月程度で日本中の全データを集約することもできると思います。ゆっくりであればPC1台でも検索エンジンを作ることができるのではないのでしょうか。
ただ…
Googleのクローラは毎日、分単位、秒単位で情報を更新しており、これに対抗しようとすると相当な台数のマシンと相当な容量のメモリと巨大なハードディスクが必要になるというわけです。
とはいえ、自分や研究室専用の検索エンジンをつくることは可能だと思います。
この世界を圧巻しているGoogleに対抗する検索エンジンはどこかにないのでしょうか?
じつは、中国ではGoogleは規制されており使用できません。
どうにか繋げる方法はあるようですが、かなり難しそうです。
中国の検索エンジンは百度(Baido)というものが使用されています。
Lucene
Nutchは元々Luceneというプロジェクトから始まりました。
Luceneは全文検索といって、新聞記事など対象のwebページの全文の中から任意の文字を検索するというシステムで、それをインデックス表示にするというものでした。
Javaというプログラミング言語で記述されたオープンソースの検索エンジンです。
Luceneはカッティングさんの奥さんの名前だそうです。
Apache hadoopとAWS
Nutchは現在バージョン2.4までアップデートされていますが、バージョン0.6の時代にhadoop(ハドゥープ)というサブプロジェクトが生まれました。
hadoopとはGoogle File Systemのような大容量のデータを処理するシステムを持っています。またMapReduceができるシステムも兼ね備えています。Nutchでクロールしたデータを格納してインデックス処理やMapReduceができるようなシステムです。
2006年Nutchはhadoopのようなシステムが必要だということでサブプロジェクトとして開発をはじめましたが、このhadoopをAmazonが採用しました。
hadoopとAWS(Amazon Web Service)
Amazonはhadoopへ寄付をしたり人材派遣をするなどhadoopの開発を支援するようになりました。Amazonはhadoopを自身のサイト構築に使用しました。このWebサービスがAWS(Amazon Web Service)というクラウドです。そしてこの自身のインフラの貸し出しを開始しました。
クラウドとは
クラウドとはマシンが何百万台と大きなファイルシステムを共有するものです。その仕組みのためにはGoogle File SystemやMapReduceが必要です。
それがhadoopというオープンソースのシステムを介することによって無料で使用することが可能になりました。
AppleのクラウドもAWSを使用しています。
Amazonだけでなく、Googleもクラウドの貸し出しをおこなっています。
いずれにしても、Googleの独占状態だったところがhadoopというオープンソースのシステムが出現したことにより、ハードウェアをたくさん持っているところが安く貸し出しをしてくれるようになったというわけです。
まとめ
検索エンジンではGoogleの独占状態ですが、その他のデータの保存ややり取りなどの使用がクラウドの登場によって簡単にできるようになりました。
Googleの独占状態に疑問を持った愛妻家のカッティングさんがオープンソースのシステムを開発を進めてくれたおかげなんですね。
現在はデータの保存などを中心に使用されているクラウドですが、徐々にプログラミングの構築や難しい統計処理、ディープラーニングなど考える場になってきています。
現在はPCの中でデータを構築したりしています。「Intel入ってる?」などの懐かしいCMもありました。今後クラウドの処理能力が圧倒的になってくるとPCがただのデータを入力するものや画像を処理するものへと変化していく可能性もあります。スマホやiPadが良い例だと思います。
サーバーとクラウドの違いはサーバーは1台ですが、クラウドは膨大な数がファイルシステムによって繋がっています。MapReduceのような分散処理が可能になっているというわけです。
クラウドがただの倉庫から脳へと変わっていくのではないのでしょうか。
コメント