搜索引擎不精确计数(约xxx结果)

时间:2008-09-28 23:19:03

标签: algorithm search-engine information-retrieval counting

当你在谷歌搜索时(我几乎可以肯定Altavista做了同样的事情)它会说“关于xxxx的结果1-10”......

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

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

5 个答案:

答案 0 :(得分:2)

很可能它类似于大多数SQL系统在其查询规划中使用的估计行数;表格中的一些行(确切地称为上次收集统计数据,但通常不是最新的),乘以估计的选择性(通常基于通过抽样一些小子集计算的一种统计分布模型)行)。

PostgreSQL手册有一个关于statistics used by the planner的部分,它提供了相当丰富的信息,至少如果您按照pg_stats和其他各个部分的链接进行操作。我确信这并没有真正描述谷歌的作用,但它至少会显示一个模型,你可以得到前N行和估计可能有多少。

答案 1 :(得分:1)

与你的问题无关,但是当我做一个简单的自我搜索时,我想起了我的一个朋友的一个小笑话(并且不告诉我你从未用Google搜索过你的名字)。他说过像

这样的话

“哇,仅仅0.22秒即可获得5,000个结果!现在,想象一下这一分钟,一小时,一天有多少结果!”

答案 2 :(得分:1)

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

一种启发式方法可能是进行样本计数 - 随机抽取1000个左右的页面并查看匹配的百分比。在样本中获取一个统计上重要的答案并不需要太多。

答案 3 :(得分:1)

尚未提及的一件事是重复数据删除。一些搜索引擎(我不确定Google究竟是如何做到的)将使用启发式方法来尝试确定两个不同的URL是否包含相同(或极其相似)的内容,因此是重复的结果。

如果有156个唯一的URL,但其中9个已被标记为其他结果的重复,则更容易说“约150个结果”而不是“156个结果包含147个唯一结果和9个重复”。

答案 4 :(得分:-1)

返回精确数量的结果不值得精确计算的开销。由于知道有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."