「逆インデックス」、「ベクトル空間モデル」、「コサイン類似度」、「PageRank」などの考え方を含む、検索エンジンのランキングの基本を理解しています。
ただし、ユーザーが人気のあるクエリ用語を送信すると、この用語を含む何百万ものページが表示される可能性が非常に高くなります。その結果、検索エンジンはこれらの何百万ものページをリアルタイムでソートする必要があります。たとえば、Google で「バラク オバマ」と検索してみました。「約9億3700万件(0.49秒)」と表示されます。0.5 秒以内に 9 億以上のアイテムをランク付けしますか? それは本当に私の心を吹き飛ばします!
検索エンジンはどのようにして大量のアイテムを 1 秒以内に並べ替えるのでしょうか? 誰か直感的なアイデアを教えてくれたり、参考文献を指摘したりできますか?
ありがとう!
アップデート:
- これまでの回答のほとんど (いくつかの古い議論を含む) は、「逆インデックス」に貢献しているようです。ただし、私の知る限り、逆索引は「関連ページ」を見つけるのに役立つだけです。言い換えれば、逆インデックスによって、Google は「バラク・オバマ」を含む 9 億ページを (数十億を超えるページから) 取得することができました。ただし、これまで読んだスレッドに基づいて、これらの何百万もの「関連ページ」を「ランク付け」する方法はまだ明確ではありません.
- MapReduce フレームワークがリアルタイム ランキングの主要コンポーネントになる可能性は低いです。 MapReduce は、バッチ タスク用に設計されています。ジョブを MapReduce フレームワークに送信する場合、通常、応答時間は少なくとも 1 分であり、明らかに遅すぎて要求を満たすことができません。