Algorithm 搜索引擎不精确计数(关于xxx个结果)

Algorithm 搜索引擎不精确计数(关于xxx个结果),algorithm,search-engine,information-retrieval,counting,Algorithm,Search Engine,Information Retrieval,Counting,当你在谷歌上搜索时(我几乎可以肯定Altavista也做了同样的事情),它会显示“结果1-10约xxxx” 这总是让我惊讶。。。“关于”是什么意思? 他们怎么能粗略计算呢? 我确实理解为什么他们不能在合理的时间内得出一个精确的数字,但他们怎么能得出这个“近似”的数字呢 我敢肯定,这一条背后有很多理论,我没有听清楚……与你的问题无关,但这让我想起了我的一个朋友在做一个简单的自我搜索时开的一个小玩笑(别告诉我你从未用谷歌搜索过你的名字)。他说了一些类似的话 “哇,大约5000个结果只需0.22秒!现

当你在谷歌上搜索时(我几乎可以肯定Altavista也做了同样的事情),它会显示“结果1-10约xxxx”

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


我敢肯定,这一条背后有很多理论,我没有听清楚……

与你的问题无关,但这让我想起了我的一个朋友在做一个简单的自我搜索时开的一个小玩笑(别告诉我你从未用谷歌搜索过你的名字)。他说了一些类似的话


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

返回准确的结果数不值得花费大量的开销来准确计算。由于知道有1004345个结果而不是“大约1000000个”没有多少附加值,因此从最终用户体验的角度来看,更快地返回结果比计算总数的额外时间更重要

来自谷歌自己:

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


一种启发式方法可能是进行样本计数——随机抽取1000页左右的样本,看看匹配的百分比。样本中不需要太多就可以得到统计上有意义的答案。

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


PostgreSQL手册中有一节提供了相当丰富的信息,至少如果您遵循pg_统计和其他各节的链接。我相信这并不能真正描述谷歌的功能,但它至少展示了一个模型,您可以在其中获得前N行,并估计可能还有多少行。

有一件事尚未提及,那就是重复数据消除。一些搜索引擎(我不确定谷歌具体是如何做到的)会使用启发式方法来尝试并确定两个不同的URL是否包含相同(或极其相似)的内容,从而得出重复的结果


如果有156个唯一的URL,但其中9个已被标记为其他结果的副本,那么更简单的说法是“大约150个结果”,而不是像“156个结果,其中包含147个唯一结果和9个副本”。

大笑(所以不让我只键入LOL,grrr)呵呵。。。这应该是一个评论,而不是回答。我明白了。。。我的问题正是他们如何做到这一点。