后端技术指南针:通用搜索引擎的基本原理和组成
优采云 发布时间: 2021-05-20 00:09
后端技术指南针:通用搜索引擎的基本原理和组成
本文摘自作者的指南针K门户网站微信公众号“后端技术指南针”。要转载本文,请联系后端技术指南针公共帐户。
1.写在前面
今天,我将与朋友一起学习有关常规搜索引擎的一些技术要点。
由于搜索引擎中的内容太多,因此每个部分足以写几篇文章,因此本文只是引言,而退伍军人必须自己动手做才能更深入。
通过本文,您将对常规搜索引擎的基本原理和组成有更清晰的了解。仔细阅读后,您肯定会有所收获!
别胡说八道,请上车去!
2.初次接触搜索引擎
2. 1搜索引擎分类
根据搜索引擎的使用情况和规模,搜索引擎可以简单地分为两类:
通用搜索引擎
一般搜索也称为大搜,例如Google,百度,搜狗,神马等。
垂直搜索引擎
垂直搜索,也称为垂直搜索,是在特定领域的搜索,例如使用QQ音乐搜索周杰伦的歌曲。
尽管两种类型的搜索引擎的数据规模和数据特征不同,但它们都旨在弥合用户与海量信息之间的鸿沟。
2. 2搜索和推荐
搜索和推荐经常进行比较,但是两者之间存在一些差异和联系。
共同点
通常来说,搜索和推荐既解决用户与信息之间的隔离问题,又为用户提供有用/需要/喜欢的信息。
差异
通常由用户触发搜索,并根据他们自己的意图进行搜索。系统通常会推送建议,以允许用户查看可能感兴趣的信息。
2. 3搜索引擎评估标准
我们每天与搜索引擎打交道,对搜索引擎质量的评估可以简单地概括为:准确性,及时性,响应速度,权限等。
换句话说,搜索引擎了解用户真正想要查找的内容,并可以快速准确地显示它。他们还可以及时显示一些热门信息和突发信息收录,可以很好地赢得用户。
这个目标需要对搜索引擎的多个模块进行协同处理,这是一项复杂的系统工程,而不是一件容易的事。
3.常规搜索引擎的概述
3. 1搜索引擎的基本过程
Dabai尝试使用普通语言大致表达通用搜索引擎的工作方式:
1.网络蜘蛛爬虫每天都会不知疲倦地工作收录网页,然后将其存储,以便每个站点的页面都有一个镜像副本,此规模为数百亿/数千亿美元。
2.简单镜像无法直接使用。需要处理。在每个网页上执行分词,以建立搜索词和网页之间的对应关系,以便用户在搜索内容时会得到很多相关的网页。
3.例如,“搜索隐藏的角落”可能找到100个相关网页,但是网页与搜索字词之间的相关性必须强或弱,因此需要对网页进行排序。有许多排序策略。最后,高质量的网页会在最前面显示给用户。
用户看到相关结果后,单击或跳过,搜索引擎会根据用户的相关操作进行调整以实现整个闭环过程。
4.为了更好地了解用户的真实目的,有必要执行一些处理,例如了解搜索词的意图,分词,同义词替换,语法错误纠正等,然后获得根据这些搜索字词为用户查找数据。找到所需的网页。
例如,如果搜索词是“ eagles”,则它可能是自然界中的老鹰,也可能是NBA中的一支球队:
3. 2搜索引擎的基本组成
让我们从整体角度简要介绍每个模块的基本组成和主要功能:
网络采集器模块
搜索引擎中的Web爬网程序是网页的搬运工,负责下载允许在Internet上进行爬网的网页。如果将搜索引擎视为一家餐厅,则网络爬虫模块就是该餐厅的购买者。
内容处理模块
负责爬网程序下载的页面上的内容分析,内容清理,主体提取,索引编制,链接分析,反作弊和其他链接。
内容存储模块
存储模块是搜索引擎的强大后盾。它存储了已爬网的原创网页,已处理的中间结果等。此存储的规模也很大,可能需要成千上万台计算机。
用户分析模块
用户模块负责接收用户的查询词,分词,同义词转换,语义理解等,以弄清用户的真实意图并集中查询以返回正确的结果。
内容分类模块
将由用户模块解析的查询词与内容索引相结合以生成用户查询结果并对页面进行排序是搜索引擎的核心部分。
接下来,我们将简要介绍几个模块的基本内容和技术要点。
4.网络采集器模块简介
网络采集器模块是常规搜索引擎的非常基本的组件。它通常由分布式爬网程序实现。让我们来看看这个搬运工是如何实现发现大量网页的:
网络爬虫的基本过程:
爬网过程中有多种遍历策略:深度优先遍历DFS,广度优先遍历BFS,部分PageRank策略,OPIC在线页面重要性计算策略,大站点优先级策略等。
在工程实践中,您需要根据自己的情况和搜索引擎的特征选择某种策略或多种策略的组合。
Web爬网程序需要遵循机器人协议(Web爬网程序排除标准),该协议是Web爬网程序与站点之间的绅士协议。该网站使用该协议告诉网络爬虫,哪些可以被捕获,哪些不可以。
Web爬网程序还需要考虑爬网的频率,以防止对站点造成过多负担。简而言之,搜索引擎的网络爬虫必须是一个谦虚的绅士。
5. Web内容处理模块
采集器模块存储网页内容后,网页内存处理模块开始解析网页内容。主要任务包括:数据清理,网页内容分词,建立前向索引,建立反向索引等。
5. 1数据清理
通常来说,除了特定的内容之外,网页中还会有许多不相关的内容,例如html标签,促销等,在实际的搜索引擎中是无用的。
内容处理模块将清除无用的数据和标签,以为后续的单词分段做准备。
5. 2汉语分词
清理内容关键词的分词提取,例如一个网页内容有1000个词,分词后大约有50个词,相当于提取了网页的主体,分为不同的部分标题,摘要,正文等内容。内容使用不同的权重处理。
在分词过程中,将删除“ de,de,di”等停用词,功能词等,以尝试恢复网页的主要内容。
我们使用在线网页分词工具和真实网页来模拟此过程:
用于网络分词的在线工具:
获取网络:
您可以看到在分词后可以标记词频。这些是后续网页排名的重要来源。但是,中文非常复杂,因此有很多分词算法。常见的包括:
5. 3前索引
假设我们对每个网页的docid进行唯一编号,则在上一次分词之后,一个网页将被划分为多个具有不同权重的实体字。
所谓的前向行是指可以根据文档ID获得属于该网页的所有内容。这是一个积极的过程,符合我们的想法。相对而言,索引会倒置。
让我们以“ The Hidden Corner”情节简介页面为例来模拟分词,大致如下(分词的结果纯属大脑补充,视实际情况而定):
5. 4倒排索引
如果我们细分10,000个网页,则其中收录一些公共搜索词:微山湖,智慧老虎山,三十年,隐秘角落等,因此我们将在汇总->网页的映射关系后创建搜索词。
因此对于搜索词“隐藏的角落”,有许多网页,反向索引相当于从一个单词中可以提取多少文章的过程。
就像谈论食物时想到食物一样:火锅,烧烤,烤鸭,炒菜等,这是一个从点到面的过程。这种反向过程在搜索引擎中非常重要。
5. 5章摘要
内容处理模块清理爬网的网页,预先为爬网程序模块分配新的URL,对内容进行单词分段,并建立前向索引和反向索引,这是上一个和下一个之间的中间链接
特别是,提到前向索引和倒排索引并不是直觉上的直觉,但事实并不难理解:
正索引:特定于有多少个网页关键词,具体是指属于该网页本身的内容集合,即网页。
倒排索引:搜索关键词对应于多少个相关网页,即,替代网页的集合,是网页的一种类型。
6.页面排序和用户模块
6. 1网页排序的必要性
由于存储的网页数以百亿计,搜索词可能与成千上万,数十万甚至更多的相关网页相关。
需要综合考虑网页排名:相关性,权威性,及时性,丰富性和其他方面。
搜索引擎必须向用户显示高质量,相关性强的网页,并将其放在首位,否则搜索结果将很差,用户将无法购买。
事实上,也是如此。例如,搜索引擎返回10页结果,每页10个结果,以及100个摘要。通常,用户在单击第1-3页后将不再单击,因此排序内容的头部对于搜索结果至关重要。
我们仍然以搜索“隐藏角”为例。百度总共返回了10页,其中1-2页的内容密切相关,这是一个比较好的搜索结果:
6. 2网页排序常用策略
网页排名策略是不断优化和改进的演进过程。让我们看一下可用的排序策略:
基于单词频率和位置权重的顺序
这是早期搜索引擎经常采用的一种方法。它相对简单,但效果还不错。
简而言之,它基于网页中关键词的频率和位置作为排名基础,因为通常认为搜索词出现的频率越高,位置越重要,相关性就越好网页的排名,并且排名更高。
字频不仅仅是次数的计数。判断关键词的相对频率需要一个整体的概念。这是我们要讨论的TF-IDF逆文档频率。让我们看一下百度百科的解释:
TF-IDF(术语频率-文档频率的倒数)是信息检索和数据挖掘中常用的加权技术。
TF是术语频率,IDF是反向文档频率。
TF-IDF是一种统计方法,用于评估单词对文档集或语料库中文档之一的重要性。
单词的重要性与在文档中出现的次数成正比,但与此同时,它在语料库中出现的频率则成反比。
带栗子:
“ dining”一词在网页上出现了10次。尽管有很多次,但“ dining”一词却很常见,因为它出现在许多其他网页上,因此搜索词“ dining”的重要性相对降低了。
基于链接分析的排序
链接分析得出的结论是:一个网页被其他网页引用的次数越多,或者被引用的权威网页越多,则该网页的质量就越高。
基于链接分析的排序算法很多,其中最著名的PageRank算法被Google广泛采用作为其核心排序算法。
看看PageRank算法的基本思想:
网页的重要性由PageRank值衡量。网页的PageRank值体现在两个方面:引用该网页的其他网页的数量和引用该网页的其他网页的重要性。
假设一个网页A被另一个网页B引用,则网页B将PageRank值分配给网页B引用的网页,因此,引用的网页A越多,PageRank值就越高。
此外,网页B越重要,它可以分配给它引用的页面的PageRank值就越大,网页A的PageRank值越高,它就越重要。
实际上,这种算法说起来很简单:例如,如果您写了一个正式帐户,则用大V重印就等于引用。转载的其他官方帐户越多,您的官方帐户内容的质量就越高。
PageRank算法也有某些问题。例如,它对新页面不友好。暂时还没有很多新页面被引用。因此,PageRank值非常低,并且PageRank算法强调网页之间的引用关系,这可能是Web的主题。对所谓的主题漂移问题的关注不足。
类似于PageRank算法,还有其他一些算法可以补偿主题关联问题,包括:HillTop算法,Topic-Sensitive PageRank算法,HITS算法等,本文将不再扩展。
6. 3 Web反作弊和SEO
搜索引擎中还有两个八分原则。头部中的网页占据了大量点击流量,这也意味着巨大的商业价值。
这里将提到SEO,首先让我们看看百度百科上SEO的定义:
搜索引擎优化也称为SEO或搜索引擎优化。通过分析搜索引擎的排名规则,这是一种了解各种搜索引擎如何搜索,如何爬网Internet以及如何确定特定关键词的方式。搜索结果排名技术。
搜索引擎采用易于搜索和引用的方法,有针对性地优化网站,提高搜索引擎中网站的自然排名,吸引更多用户访问网站,并提高网站 ]访问次数,以提高网站的销售和宣传能力,从而增强网站的品牌效应。
路高一尺,魔力高。只有魔术才能打败魔术。
Web反作弊是搜索引擎需要解决的重要问题。常用内容防作弊,链接分析防作弊等。
在网络内容上作弊
例如,在Web内容中添加大量重复的热门单词,在标题/摘要,html标签作弊等重要位置添加热门单词,例如添加大量“隐藏角”热门网页中与主题无关的单词,添加其他强调的html标签。
链接分析作弊
建立大量相互引用的页面,购买高级朋友链接等,是建立许多可以指向您自己的网页的其他网页,从而形成一个欺骗性的推介链。
6. 4用户搜索意图的理解
用户模块直接与用户交互,接收用户的搜索词,准确地了解用户的搜索意图非常重要。
实际上,用户输入多种多样,部分口语甚至是拼写错误,并且不同背景的用户对同一搜索词的要求也不同,使用无争议搜索词的目的也不同。
搜索词是:美食家宫保鸡丁
此搜索词的质量相对较高,但仍不清楚我是否想找到一家餐馆来吃宫保鸡丁?还是我想找一份宫保鸡丁的食谱?还是您想查看宫保鸡丁的历史渊源?鸡肉的相关评价?因此会有很多情况。
搜索词是:您说我中午点了什么?
语音搜索字词和拼写错误,可能涉及单词错误纠正,同义词转换等,目的是查找准确的搜索字词,然后阐明搜索意图并调出网页。
7.全文摘要
搜索引擎是一个非常复杂的系统工程,涉及许多算法和工程实现。本文旨在与所有人简要地归纳出搜索引擎的基本组成和工作原理,可以将其视为科普文章。
在搜索引擎中完成每个模块并不容易,它也是Internet产品技术含金量的典型代表。深入研究模块将大有裨益。
[编辑推荐]
使用开源搜索引擎自定义Internet。使用开源搜索引擎YaCy的提示。华为自行开发的搜索引擎暴露了出来:尽管花瓣很小,但它应该取代Google。如何在Linux下安装和部署分布式全文本搜索引擎Microsoft工程师解释了Edge默认情况下为何使用Google搜索引擎的原因,