次の検索結果を検討してください。
- 「デビッド」のためのグーグル-0.28秒で591百万ヒット
- 「ジョン」のためのグーグル-0.18秒で7億8500万ヒット
わかった。ページはインデックス化されており、インデックステーブルのカウントと最初の数項目を検索するだけでよいので、速度は理解できます。
ここで、AND演算を使用した次の検索について考えてみます。
- グーグルの「デビッド・ジョン」(「デビッド」と「ジョン」)-0.25秒で1億7300万ヒット
これは私をカチカチさせます;)いったいどうやって検索エンジンは巨大なデータセットに対するAND演算の結果をこんなに速く得ることができるのでしょうか?私はタスクを実行するために次の2つの方法を見ます、そして両方ともひどいです:
- 'David'の検索を行います。巨大な臨時雇用者のテーブルを取り、その上で「ジョン」の検索を実行します。ただし、一時テーブルは「John」によってインデックス付けされていないため、ブルートフォース検索が必要です。どんなハードウェアを持っていても、0.25秒以内には計算されません。
- 'DavidJohn'のようなすべての可能な単語の組み合わせによる索引付け。次に、キーの数の組み合わせ爆発に直面しますが、Googleでさえそれを処理するためのストレージ容量がありません。
そして、あなたはあなたが望むだけ多くの検索フレーズを一緒にANDすることができます、そしてあなたはまだ0.5秒以内に答えを得ることができます!どのように?