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