グーグルで検索すると(Altavistaが同じことをしたとほぼ確信しています)、「結果1-10の約xxxx」と表示されます...
これはいつも私を驚かせてきました...それは「約」とはどういう意味ですか?
彼らはどのように大まかに数えることができますか?
なぜ彼らが妥当な時間内に正確な数字を思い付くことができないのか私は理解していますが、どうやって彼らはこの「おおよその」数字に到達するのでしょうか?
私が見逃したこの理論の背後には多くの理論があると確信しています...
グーグルで検索すると(Altavistaが同じことをしたとほぼ確信しています)、「結果1-10の約xxxx」と表示されます...
これはいつも私を驚かせてきました...それは「約」とはどういう意味ですか?
彼らはどのように大まかに数えることができますか?
なぜ彼らが妥当な時間内に正確な数字を思い付くことができないのか私は理解していますが、どうやって彼らはこの「おおよその」数字に到達するのでしょうか?
私が見逃したこの理論の背後には多くの理論があると確信しています...
ほとんどの場合、クエリの計画でほとんどの SQL システムで使用される推定行数に似ています。テーブル内の行数 (最後に統計が収集された時点で正確にわかっていますが、一般的には最新ではありません) に、推定された選択性 (通常は、いくつかの小さなサブセットをサンプリングすることによって計算された一種の統計分布モデルに基づく) を掛けたものです。行の)。
PostgreSQL のマニュアルには、プランナーが使用する統計に関するセクションがあり、少なくとも pg_stats やその他のさまざまなセクションへのリンクをたどれば、かなり有益です。グーグルが何をしているのかを実際に説明しているとは思いませんが、少なくとも最初の N 行を取得できるモデルと、あと何行あるかの見積もりを示しています。
あなたの質問には関係ありませんが、簡単なエゴサーチをしているときに私の友人が作ったちょっとした冗談を思い出させます(そしてあなたがあなたの名前をグーグルで検索したことがないことを私に言わないでください)。彼は次のようなことを言った
「うわー、たった0.22秒で約5,000件の結果が得られます。さて、これが1分、1時間、1日でいくつの結果になるか想像してみてください!」
まだ言及されていないことの 1 つは、重複排除です。一部の検索エンジン (特に Google がどのように行っているかは正確にはわかりません) は、ヒューリスティックを使用して、2 つの異なる URL に同じ (または非常に類似した) コンテンツが含まれているかどうかを判断し、結果が重複しているかどうかを判断します。
156 個の一意の URL があり、そのうちの 9 個が他の結果の重複としてマークされている場合、「147 個の一意の結果と 9 個の重複を含む 156 個の結果」というよりも、「約 150 個の結果」と言う方が簡単です。
推定は統計に基づいていると思います。関連するすべてのページの一致をカウントするわけではないため、ヒューリスティックに基づいてクエリに一致するページの割合を大まかに計算し、それをカウントの基礎として使用します。 .
ヒューリスティックの 1 つは、サンプル カウントを行うことです。1000 ページ程度のサンプルを無作為に抽出し、一致したパーセンテージを確認します。統計的に有意な回答を得るのに、サンプルが多すぎることはありません。
正確な数の結果を返すことは、正確に計算するためのオーバーヘッドの価値がありません。「約1,000,000」ではなく1,004,345の結果があったことを知ることによる付加価値はあまりないため、エンドユーザーエクスペリエンスの観点からは、合計を計算するための追加の時間よりも、結果をより早く返すことが重要です。
Google自身から: 「Googleによる検索結果の総数の計算は推定値です。ボールパークの数値は価値があることを理解しており、正確なアカウントではなく推定値を提供することで、質の高い検索結果をより早く返すことができます。」