Windows 7やWindows XPでHD上のファイルを検索すると、処理が終わるまでに数分かかります。Googleで検索語を入力しても、答えはミリ秒単位で画面に表示されます
グーグルが私のハードドライブの何倍もの大きさのインターネットを、私のOSが私のコンピュータを検索するよりも速く検索することができるのはどうしてでしょうか?それは計算能力と正しいアルゴリズムの問題だけなのでしょうか?
254 Arne 2013-04-03
Googleはインターネットを検索しているのではなく、インデックスを検索しているのです。Googleは巨大なサーバーファームを持っていて、常にインターネットをスキャンしてインデックスを作成しています。このプロセスは、インデックスのないハードドライブを検索するのと同じように、多くの時間がかかります。Windows 7では、ハードドライブにインデックスを付けるオプションがあります。このプロセスは最初は時間がかかりますが、一度起動して実行すると、検索結果は瞬時に表示されます
Googleの検索の仕組みについて詳しく知りたい場合は、Googleの記事”How Search Works“を読んだり、記事”How Stuff Works “を読んでみてください。Googleの仕組み“
213 Simon 2013-04-03
Googleはイエローページで住所を検索するようなもの(インデックスされている)。Windows検索は、建物の数字を確認しながら運転するようなものです(インデックスされていない)
もう一つの例えは、よく整理された図書館とカードカタログに目を通すか、または単に整理されていない本の山を毎回並べ替えることでしょう
基本的には、検索の前に行われるすべての組織的な作業が高速化につながります
参考:インデックス化された場所を検索する場合、windows検索も同じように反応することができます
72 Ryan 2013-04-03
Googleのビジネスは検索(と広告の配信)であり、それに非常に力を入れています。Googleは、データが非常に速くあなたに返ってくるようにするために、いくつかのことを行っています
- まず、MapReduceとPageRankを使って、World Wide Webの総合的なインデックスを生成します。これは定期的に更新されるので、結果は新鮮です
- そのインデックスは、Googleの多くのサーバーに分散して複製されています
- クエリは複数のサーバーに分割され、返された結果が構築されます。これにより、プロセスを高度に並列化することができます
- 一般的なクエリと結果がキャッシュされるため、検索を全く実行する必要がなくなります
How Search Worksの詳細については、このリンクを参照してください
比較的、インデックスなしのハードドライブの検索は、ドライブ上のすべてのファイルを読み取る必要があり、これは多くの時間がかかることができます
さらに、ファイルシステムとインデックスの両方をツリーと考えることができます。ファイルシステムでは、ツリーのルートはトップレベルのフォルダであり、そのフォルダ内にブランチ(フォルダ)やリーフ(ファイル)を持つことができます。各ブランチには、より多くのフォルダのためのサブブランチと、より多くのファイルのためのリーフを持つことができます。この構造を検索するには、探しているリーフを見つけるために、すべてのブランチ(およびサブブランチ)を「歩く」必要があります。インデックスはこの階層を反転させます。ベースはアルファベットになり、すべてのサブブランチはこれをさらに改良したものになります。葉は、あなたが探しているアイテムの場所です。この構造を検索すると、木の大きな部分を剪定(除外)することができます(例えば、検索語の最初の文字で25本の他の枝をすぐに刈り込むことができます)
36 Brad Patton 2013-04-03
約4年前、私も同じ質問をしました。しかし、私は私の研究をやって周りにググったように、私は最終的に彼らが最も洗練された検索アルゴリズムとそのすべてのいくつかを思い付くために最高の最高の人を雇うという事実のほかに、そのことを読んだ
彼らが使用したキーデザインの一つは、私はマップリダクションのアイデアに似ていると思います。農場にはたくさんの安価なコンピュータがあります。これらのコンピュータのハードディスク容量を80ギガ程度にして、16ギガ程度のRAM、あるいは32ギガ程度のRAMを搭載するようにしましょう(可能な限り)。これらのコンピュータは、彼らが設計した洗練されたシステムを介して接続されていることを忘れないでください。しかし、ここでの重要なアイデアは、クエリが送信されたときに、それはそれがしようとし、RAM内の新鮮なデータを検索する彼らのシステムに渡されるということです。彼らはこれらの安価なコンピュータをたくさん持っていることを覚えておいてください。そして、データがRAMにあるので、ハードディスクにあるよりもはるかに高速に検索されます。しかし、彼らはあまりにも非常に役立つ洗練された(インデックスとすべてのそれらのアルゴリズム)システムを持っていることを忘れないでください
そして、このデータは新しいものである必要はありません。だから、RAMに何を入れるべきかについては、スプレイツリーと同じ原理を使うことができます
この小さなアイデアは、彼らのインデックスと他のすべての他のものと相まって、彼らの答えに述べた、それがハードドライブの検索よりも高速である理由の一つかもしれません
- 他の検索結果から予測する力
- データはRAMに入っている可能性が高いですが、これは誰もが知っている速さです
- 複数のシステムを使用して分割して征服する
- 探すことが彼らの最優先事項です
もちろん間違っているかもしれませんが、これは私にとっては理にかなっていました。そして、私は学んだことに満足していました
30 Touch 2013-04-03
Googleは、非常に洗練されたインデックス作成システム、並列処理、標準的なスタンドアロンコンピュータでは利用できない多くのロードバランシング技術を使用しています
20 Frank Thomas 2013-04-03
2004年、Googleの一部の社員が論文を発表しました。MapReduceを発表した
また、Google File System(GFS)はHadoop Distribud File System(HDFS)のような分散ファイルシステムで、目的に合わせて非常に最適化されている。また、私が知っている限りでは、GFSはHDFSよりも数千倍高速に動作します
4 smttsp 2013-04-04
私は、私もしばらく前にこの質問を持っていたとGoogleが表面上で何をするかを説明するこれらの素晴らしいビデオを見つけたので、私はこれに追加すると思いました。見ていて面白い
Google on Youtube 1 Google on Youtube 2
彼は少し深くまで行くが、技術的なことで迷うほど深くはない
Cheers.
2 Mogget 2013-04-04
ここでの素晴らしい回答に何かを追加するだけです。Googleは人気のある検索フレーズのキャッシングを使用しています。これらの検索結果はメモリに常駐しています。そのため、たくさん検索されているものを検索した場合、検索結果はほぼすぐに表示されます
2 Mellowcandle 2013-04-08
単純なレベルでの質問に答えるには:後ろにキーワードのインデックスが付いた教科書を持っていると想像してみてください
ハードディスクを検索するというのは、本を一冊一冊めくっていくようなもので、ページごとにキーワードが出てくるかどうかをスキャンしていきます
インターネットの検索エンジンを使うのは、インデックスでキーワードを調べて、それが与えるページ番号に直接目を向けるようなものです
もちろん、実際にはもっと複雑です。例えば、普通はインターネットとは違う種類の情報をハードディスクで検索するでしょう。しかし、基本的なことは、検索エンジンはインデックスを使っているということです。検索エンジンはすでに「本」を一語一語調べて、それらの単語のリストを、それらの単語がどこにあるかと一緒に編集しています
例えば、本の索引の構成を考えてみましょう。第一に、通常はアルファベット順に並べられており、第二に、文字の見出しが付いている場合があります。索引の中の単語を調べると、欲しい文字で始まる単語のリストがすぐにわかります。また、リストがソートされているので、リストの中から目的の単語を見つけたり、不足している単語があればすぐに教えたりすることができます
つまり、要約すると、ハードディスクには本があるだけで、検索エンジンにはインデックスがあるようなものです。他の人が指摘しているように、ハードディスクにインデックスを付けるソフトウェアを使うことも可能ですし、全体の代わりにインデックスを使うこともできます
1 mwfearnley 2013-04-07
GoogleがAuto Complete
を出現させ、AJAX
を使った理由の一つにスピードの問題があったのではないでしょうか。現在では、入力中はバックグラウンドで単語が送られてくるので、まだ入力が終わっていない間にGoogleが仕事の一部をこなすことができるようになっています。また、インデックスは複数の単語の組み合わせに基づいています(これはページの下の方にサジェストとして表示されます)。現在、ネットワーク速度はハードドライブよりも高く、おそらくそれらのインデックスの多くは、ファーム内のサーバーのRAMに常駐しています
-1 Xaqron 2013-04-06