【问题标题】:Search Engines Inexact Counting (about xxx results)搜索引擎不精确计数(大约 xxx 个结果)
【发布时间】:2010-09-13 21:40:06
【问题描述】:

当您在 Google 中搜索时(我几乎可以肯定 Altavista 做了同样的事情)它显示“结果 1-10 of about xxxx”...

这一直让我感到惊讶...“关于”是什么意思?
他们怎么能粗略计算?
我确实理解他们为什么不能在合理的时间内得出一个精确的数字,但他们是如何达到这个“近似”的呢?

我确信这背后有很多我错过的理论......

【问题讨论】:

    标签: algorithm search-engine information-retrieval counting


    【解决方案1】:

    这很可能类似于大多数 SQL 系统在其查询计划中使用的估计行数;表中的行数(与上次收集统计数据时完全一致,但通常不是最新的)乘以估计的选择性(通常基于通过对一些小子集进行抽样而计算出的一种统计分布模型行数)。

    PostgreSQL 手册中有一个关于statistics used by the planner 的部分提供了相当丰富的信息,至少如果您按照指向 pg_stats 和其他各个部分的链接进行操作。我敢肯定,这并不能真正描述谷歌所做的事情,但它至少显示了一个模型,您可以在其中获得前 N 行,并估计可能还有多少行。

    【讨论】:

      【解决方案2】:

      与您的问题无关,但让我想起了我的一个朋友在进行简单的自我搜索时开的一个小玩笑(不要告诉我您从未在 Google 上搜索过您的名字)。他说了类似

      “哇,大约 5,000 个结果在 0.22 秒内!现在,想象一下,在一分钟、一小时、一天内有多少结果!”

      【讨论】:

      • 大声笑出来(所以不会让我只输入 LOL,grrr)
      • 呵呵...不过,这确实应该是评论,而不是答案。
      【解决方案3】:

      我想估计是基于统计数据。他们不会计算所有相关的页面匹配,所以他们(我会)做的是根据一些启发式大致计算出与查询匹配的页面百分比,然后将其用作计数的基础.

      一种启发式方法可能是进行样本计数 - 随机抽取 1000 页左右的样本,然后查看匹配的百分比。不需要太多样本即可获得具有统计意义的答案。

      【讨论】:

        【解决方案4】:

        还没有提到的一件事是重复数据删除。一些搜索引擎(我不确定谷歌具体是如何做到的)会使用启发式方法来尝试确定两个不同的 URL 是否包含相同(或极其相似)的内容,因此是重复的结果。

        如果有 156 个唯一 URL,但其中 9 个已被标记为与其他结果的重复,则说“大约 150 个结果”比“156 个结果包含 147 个唯一结果和 9 个重复”之类的更简单。

        【讨论】:

          【解决方案5】:

          返回准确数量的结果不值得精确计算的开销。由于知道有 1,004,345 个结果而不是“大约 1,000,000 个”并没有太大的附加值,因此从最终用户体验的角度来看,更快地返回结果而不是计算总数的额外时间更为重要。

          来自 Google 自己: "Google's calculation of the total number of search results is an estimate. We understand that a ballpark figure is valuable, and by providing an estimate rather than an exact account, we can return quality search results faster."

          【讨论】:

          • 我明白了......我的问题正是他们“如何”做到这一点。
          猜你喜欢
          • 2014-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-10
          • 2012-10-25
          相关资源
          最近更新 更多