搜索引擎主题模型优化(海量文档数据的来源,查找技术又是如何的呢?)

优采云 发布时间: 2021-12-17 16:27

  搜索引擎主题模型优化(海量文档数据的来源,查找技术又是如何的呢?)

  内容:

  搜索引擎的使用我们并不陌生。对于正常的搜索过程,比如用户输入查询“搜索引擎技术”,搜索引擎需要将存储在磁盘上的两个词的反向排序索引读入内存,然后进行解压,然后找到打乱根据两个词对应的倒排排序列表的基数,找到所有收录两个词的文档集合,根据排序算法对每个文档的相关度进行打分,根据相关度输入最相关的搜索结果。

  但是这一系列步骤中海量文档数据的来源、存储和搜索技术呢?以下是我最近阅读的《这就是搜索引擎:核心技术详解》一书的总结:

  一、网络爬虫

  首先,搜索引擎的文档数据从何而来?

  站长的一个常识是,当他们部署一个网站时,他们会将自己的页面提交给谷歌、百度、必应等搜索引擎提交自己的页面,以方便他们的爬虫。快速抓取提交网站的页面。

  什么,你不知道爬虫?不懂科普

  

  爬虫的通用框架

  目前的爬虫大多是分布式爬虫,爬取策略包括:

  但是,在网站的垂直领域,比如携程的机票数据、京东产品等页面,很难有显示链接指向。您仍然需要输入 关键词 来搜索它。在这种情况下,按照爬虫的规则很难爬到这种页面,所以就出现了暗网爬行。简单来说就是爬虫在搜索页面提交查询,然后在目标网站提交查询后搜索页面的组合,基于暗网爬取,百度提出了“Project Aladdin”,例如Google的Onebox , 例子

  但是现在想想,网上最方便的就是抄袭抄袭。统计显示,近似重复页面的数量高达网页总数的29%,而相同的页面约占所有页面的%22。,即相当比例的网页内容相同或大致相似。例如,新闻话题的内容几乎相同,但两个页面的网页布局却大不相同。为了解决这个问题,需要对网页进行去重,尽量不向用户呈现重复的搜索结果,体现原创的本质,提供用户搜索体验。

  主要的网页去重算法有:Shingling、I-Match、Simhash、SpotSig等。

  二、搜索引擎索引

  对于大量的网页文档内容,需要使用索引来快速找到被查询的网页。

  为了应对大量的文档和各种查询,搜索引擎经常使用倒排索引作为词到文档的映射。

  

  

  最简单的倒排索引

  倒排索引主要包括单词词典和相应的倒排列表,及其相关的技术选项:

  三、搜索模型

  拥有大量数据文档并进行相应排序后,如何找到搜索到的相关文档?

  判断网页内容是否与用户查询相关,取决于搜索引擎采用的检索模型:

  布尔模型:使用简单的“和/或/非”逻辑关​​系来判断文档是否与查询相关。基于此模型的搜索结果过于粗糙,无法满足用户需求。

  向量空间模型:将查询词和文档中的关键词转换为特征向量,然后使用余弦公式

  

  计算文档和查询的相关性并对输出结果进行排序。关于特征向量权重计算,也称为TF*IDF框架。词频TF表示一个词在文档中出现的次数,IDF表示查询词在所有文档中出现的频率的倒数:

  

  

  特征权重值是他们的产品,具体中文解释是这样描述的:

  概率检索模型:对于某个文档D,如果属于相关文档子集的概率大于不属于不相关子集的概率,则该文档与用户的查询相关,即

  

  具体算法是使用MB25模型计算:

  

  这个模型已经是一个非常成功的概率模型方法,然后人们对它还有其他的改进。

  四、链接分析算法

  搜索引擎的最终搜索结果不仅基于文档相关性,还基于网页的重要性。

  搜索引擎在找到能够满足用户请求的网页时,主要考虑两个因素:一方面,用户发送的查询与网页内容的相似度得分;另一方面,通过链接分析方法计算的得分,即网页重要性,搜索引擎两者的融合,联合拟合相似度得分函数,对搜索进行排序。

  

  基本链接分析算法图

  搜索引擎经常使用链接分析算法来对网页的重要性进行排名。更基本和众所周知的算法是 PageRank 和 Hits。前者主要通过随机游走模型计算,后者基于子集传播模型。当然,为了弥补其算法的不足,也做了很多类型的改进,比如“话题敏感PageRank”算法来改善原Pagerank的话题偏差,Hilltop结合Hits和pagerank。

  但是,在商业利益的驱使下,很多网站站长会分析搜索引擎排名,并采取一些措施提升网站排名,但也存在严重影响搜索引擎用户的恶意优化行为,因此有些算法是还提出了应对各种恶意作弊:TrustRank、BadRank、SpamRank等,并且这些反作弊算法的结果权重占搜索的很大比例。

  五:存储与计算

  搜索引擎需要存储和计算数以亿计的数据,他们觉得其中一些是非结构化或半结构化数据。如何构建存储平台和计算平台,简化存储和管理成为一个重要的问题。谷歌的一位代表提出了他的三驾马车:/BingTable/MapReduce。谷歌曾就三驾马车相关技术发表详细论文,催生了云计算新宠“Hadoop”。

  

  hadoop和三驾马车的关系

  GFS:谷歌分布式文件系统,由大量PC组成,机器故障时正常,支持横向增量扩展,可存储数百亿海量网络信息。(HDFS 被认为是 GFS 的开源实现)

  BigTable:是一种基于GFS的海量结构化或半结构化存储的存储模型。它的存储模型介于关系数据和 NoSql 存储系统之间。它特别适用于一次写入和多次读取。减少修改的业务需求。(HBase 被认为是 BigTable 的开源实现)

  Map/Reduce:是一种分布式云计算模型,本质上是通过分而治之的思想实现的。它通常是一系列多个 MapRduce 子任务。前面的 Map 阶段经常作为后面的 Reduce 阶段的输入来执行一系列复杂的任务。任务的计算。(使用这个模型最著名的开源代表是Hadoop)

  Pregel:基于BSP的同步计算模型,用于解决*敏*感*词*分布式图计算问题,弥补Map/Reduce在图计算方面的不足。陈伟超步计算一次迭代,系统从一个超到另一个 否,达到算法的终止条件。谷歌早期的PageRank算法主要使用Pregel平台进行计算。(Giraph 被认为是 Pregel 的开源实现。后来卡内基梅隆大学发明了另一个分布式图处理模型:GraphLab)

  随着开源Hadoop的出现,驾驭谷歌的三驾马车变得更加容易。目前,Hadoop也已经成功投入业务,得到了Facebook、阿里、腾讯等巨头的支持。

  六、搜索引擎缓存机制

  现在大家应该都知道,搜索引擎已经成为各大网站的主入口,点击“百度”,往往上面复杂的计算搜索结果会很快的呈现在浏览器上,这么快主要是因为缓存。

  搜索引擎的缓存设计主要基于缓存的搜索结果和缓存的搜索词的倒排索引。前者响应速度快,但命中率不高,后者获取缓存后还要重新计算分数。响应速度比较慢,但是命中率比较高。所以现在常用的缓存将两者结合起来,先用结果缓存,再用词表缓存,而且缓存也分为倒排词组合计算得分缓存和独立倒排两级缓存,聚合用户反应速度和命中率是两个优势。

  写在后面:

  以上总结主要是针对搜索引擎的一般流程。这只是个人阅读本书后的意见。如今,技术的发展比我们阅读的要快得多。所以文中如有不妥之处,请大家指点,共同学习。共同进步。

  文章中的插图主要来源于书中。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线