在这节关于互联网搜索引擎原理的课程中,我们将了解搜索引擎如何对结果进行分类、描述和评估。
让我们想象一下目前在搜索服务器上准备好的一个成品桶。我们的第一个搜索查询来自于用户,现在我们需要做第一个 "粗略 "的排序,这将会进一步完善。
让我们来看看下面的输入查询样本。
[O (and) pejskovi (and) a (and) kočičce]
是的,这就是搜索服务器从用户那里收到经过处理的查询的形式,现在等待结果的返回。我们总共只有不到`300毫秒的时间来做这件事,如此之快:)
在第一步中,我们得到了满满一桶未来的结果ID(也叫候选人)和要执行的操作。这个检索到的桶在某些情况下可能并不完整,而只包含服务器在某个预定的时间间隔(也称为**超时)内设法从磁盘上读取的值。 例如,我们得到以下数字系列(事先已部分排序)。
木桶 | 文件 |
---|---|
o | 2,3,4,5,9,12,15,19,23,26,28,34,39,42,58,67,83,91,115 |
狗 | 5,19,23,42,46,58 |
a | 2,3,4,5,9,12,15,19,23,26,28,34,39,42,58,67,83,91,115 |
阴部 | 9,19,42,57,58,62,68,83 ! |
我们现在对所有的集合进行粗略的交集,得到一个在所有桶中都相同的文档ID列表。在实践中,我们通过最短的列表,搜索其他的列表。
所有桶中的共同ID是 "19,42,58",所以未来的结果页包含3个项目,其顺序尚不清楚。我们仍然把文件看成是ID,因为这样可以节省大量的数据。然而,在搜索结果中,我们一般不希望向用户列出文件编号,而是列出文件标题(标题)、描述、URL和其他信息。这是由 "描述符 "组件提供的。
从上一章开始,我们就留下了一份未来结果的候选名单。我们以系统排序的形式检索,即按照搜索引擎在索引中的顺序排列。在这一点上,我们不能再对大数据进行顺序读取,而必须顺序遍历某种类型的关系数据库,为另一种类型的排序寻找更多的信息,让用户更容易理解。
例如,一个数据库分片可能看起来像这样。
ID | 标题 | 标签 | URL | 排名 |
---|---|---|---|---|
19 | 约瑟夫-恰佩克:一只狗和一只猫的故事 | 那时候,狗和猫还在一起耕作;它们在森林边上有自己的小房子,一起住在那里,想按照伟大的人的方式做一切事情 | www.troglodytarium.cz/webz/axf/.../Capek_J_Pejsek_a_kocicka.htm | 72 |
谈到狗和猫,狗说:"好吧,"猫拿着肥皂和一盆水,跪在地上,拿狗当刷子,和狗一起擦洗整个地板。地板全湿了 | www.capek.narod.ru/povidani.htm | 86 | ||
58 | 狗和猫如何为节日做蛋糕 | 明天是狗的节日,也是猫的生日。孩子们知道这一点,想在狗和猫的生日时给它们一个惊喜。他们在想他们能为狗做什么,并且 | a.da.mek.sweb.cz/capek.j/dort.htm | 34 |
最后一步是计算出答案的相关性。对于大多数结果来说,将相关性表示为一个具有固定半径的单一数字就足够了,结果将按照这个半径进行排序。按照等级,结果又被 "粗略 "地分为几组(组的数量取决于等级的差异),这些组被进一步处理。
排名最高的组被放在首位,通常这足以对结果的第一页进行排序,我们不必再处理其他事情。然而,如果几个不同的文件有相同的排名,我们需要做一个更详细的分析,并计算额外的辅助排名来帮助页面排名。额外的排名可以是例如链接的质量、文件的年龄、标题的长度、URL的 "外观和感觉 "以及许多其他因素。
万岁!我们有了结果,现在剩下的就是为用户渲染页面。结果包被交还给服务器,服务器将结果装入预先准备好的模板,在页面周围插入广告横幅,并将页面发回给用户。同时,它还可以进行其他辅助操作,如缓存结果。如果其他人在不久的将来的某个时间点(例如,在过去一小时内)搜索相同的查询,结果将不会被再次搜索,而只是从临时内存中读取 - 这通常有助于提高搜索引擎的整体性能。
本文旨在描述搜索引擎内部如何工作的基本原则,以及它们如何设法在仍然合理的时间内检索出理论上无限数量的文件。这些都是巨大的数学优化,是由最好的编程团队多年来开发的。
对这些细节的全面描述超出了本文的范围。整个事情也很复杂,因为大多数其他步骤没有被任何一个搜索引擎详细描述,因为它们是它们的商业秘密。
还需要注意的是,搜索引擎仍然不了解网页的内容和结果的意义,它仍然只是基于原始计算能力和人们对高质量文本的链接能力的统计计算,这个系统也是相当脆弱的(以 "谷歌炸弹 "为例,一个狡猾的网站管理员在搜索查询中强行提供不相关的内容)。
这个问题应该由人工智能来部分解决,所有的搜索引擎都在逐步尝试整合人工智能。然而,这仍然是未来遥远的音乐,因为这不是一项容易的任务,大多只是改进统计计算方法的问题。让谷歌图形搜索成为一个例子,它试图直接回答查询(尽管在其内部结构中,它仍然只是搜索到一个预定义的知识库)。
因此,当你下次向你最喜欢的搜索引擎提出查询时,请记住你的搜索引擎不得不做多少工作,以及它不得不从磁盘上读取多少TB的数据来为你的搜索查询找到前10个文件。
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | zh