【发布时间】:2009-04-01 05:01:49
【问题描述】:
Google 使用什么搜索算法/概念?
【问题讨论】:
-
我们让谷歌员工回答这个问题如何 - Jon S
标签: algorithm full-text-search scalability
Google 使用什么搜索算法/概念?
【问题讨论】:
标签: algorithm full-text-search scalability
【讨论】:
Google 使用互联网的倒排索引。这意味着谷歌有一个基于每个页面中的术语的所有页面的索引。例如,术语 Google 映射到此页面、Google 主页和 Google 的 Wikipedia 文章等。
因此,当您访问 Google 并在搜索框中输入“Google”时,Google 会检查其对 Internet 上所有可用术语的索引,并找到术语“Google”的条目以及所有页面列表里面有这个词的引用。
但是,Google 的索引超出了您的简单倒排索引。这就是为什么谷歌是最好的。谷歌的爬虫(蜘蛛)很聪明。很聪明。除了跟踪任何给定网页上的术语之外,它们还跟踪相关页面上的单词并将其链接到给定文档。
换句话说,如果一个页面中包含术语 Google 并且该页面具有指向另一个网页的链接或从另一个网页链接,则可以在该术语下的索引中引用另一个页面谷歌也是如此。所有这些以及更多内容都涉及到为给定查询返回给定页面的原因。
如果您想深入了解为什么网页按照搜索结果中的顺序排列,那就更有趣了。
也许搜索引擎可以用来对结果进行排序的最基本算法之一被称为词频逆文档频率 (tf-idf)。简而言之,这意味着您的结果将按照搜索词在文档中的相对重要性进行排序。换句话说,一份有 10 页并列出一次 Google 一词的文档远不如一个只有 1 页并列出十次 Google 一词的文档重要。
同样,在排名结果方面,Google 比您的基本搜索引擎做得更多。谷歌已经实施了上述专利的 PageRank 算法。简而言之,PageRank 通过考虑给定页面的人口/重要性来增强 tf-idf 算法。在这一点上,流行度/重要性可以通过谷歌不会告诉我们的许多因素来判断。然而,在最基本的层面上,Google 可以判断一个页面比另一个更重要,因为其他页面的加载和加载链接到它。
【讨论】:
哇,他们最初是在 7 年前的星期三发布的……
【讨论】:
PageRank 是 Google 用于搜索引擎的链接分析算法,但该专利已转让给 斯坦福大学。
【讨论】:
我认为“大型超文本 Web 搜索引擎剖析”有点过时了。 最近关于可扩展性的讨论:Challenges in Building Large-Scale Information Retrieval Systems
【讨论】:
Inverted index 和MapReduce 是大多数搜索引擎的基础(我相信)。您在内容上创建索引并针对该索引运行查询以显示相关性。然而,谷歌不仅仅是一个简单的索引每个单词出现的位置,他们还做了它出现了多少次,它出现在哪里,它与其他单词的关系出现在哪里,排序等等。另一个使用的简单概念是“停用词”,其中可能包括“and”、“the”等(基本上是“简单”词,经常出现,通常不是查询的重点)。此外,他们使用 Page Rank(由 TStamper 提到)之类的东西来按相关性和重要性对页面进行排序。
MapReduce 基本上是将一项作业分成较小的作业,然后让这些较小的作业在许多系统上运行(部分是为了可扩展性,部分是为了速度)。如果我没记错的话,谷歌能够利用“普通”计算机将工作分配到服务器级计算机而不是服务器级计算机。由于一台计算机的处理能力正在达到顶峰,许多技术正朝着云计算发展,其中一项工作由许多物理机器完成。
我不确定 Google 做了多少搜索,它的抓取更准确。不同之处在于它们只是从特定点开始,然后爬到任何可以到达的地方并重复,直到遇到某种死胡同。
【讨论】:
在对页面排名算法和类似算法感兴趣的同时,我发现在年初引入个人搜索(没有被广泛评论)似乎发生了很大变化 - 请参阅 Failure of the Google Gold Standard 和 Google’s Personalized Results
【讨论】:
这个问题无法规范地回答。谷歌(和其他搜索引擎)使用的算法是他们最严密保护的秘密,并且不断变化。每个正确答案都可能在一个月或一年后失效。
(我知道这并不能真正回答问题,但这就是重点,没有可能的答案。)
【讨论】: