什么是搜索引擎技术,什么是搜索引擎技术的基本工作原理!
发布网友
发布时间:2024-08-11 16:31
我来回答
共1个回答
热心网友
时间:2024-08-28 17:53
网络搜寻器技术是搜索引擎体系结构中更为基础的数据技术. 通过Web搜寻器技术,我们可以将Internet上的数百亿网页信息保存到本地,形成一个镜像文件以提供整个搜索引擎. 数据支持.
1. Web爬虫技术的基本工作流程和基础架构
网络搜寻器获取网页信息的方式与我们通常使用浏览器访问网页的原理完全相同,该浏览器是根据HTTP协议获得的. 该过程主要包括以下步骤:
1)连接到DNS域名服务器,并对要爬网的URL(URL ------>IP)执行域名解析;
2)根据HTTP协议,发送HTTP请求以获取网页内容.
完整的网络搜寻器基本框架如下所示:
整个体系结构具有以下过程:
1)请求者提供要爬网的URL的列表,并根据所提供的URL列表和相应的优先级建立要爬网的URL队列(先到先爬);
2)基于要爬网的URL队列的顺序进行Web爬网;
3)将获取的网页内容和信息下载到本地网页库中,并建立一个已爬网URL列表(用于重复数据删除和爬网过程的判断);
4)将抓取的网页放入要抓取的URL队列中,并执行循环抓取操作;
2. 网络爬网策略
在搜寻器系统中,要搜寻的URL队列是重要的部分. 在URL队列中要爬网的URL的排列顺序也是一个重要的问题,因为这涉及到先爬网哪些页面然后爬网哪些页面的问题. 确定这些URL顺序的方法称为爬网策略. 以下重点介绍了几种常见的爬网策略:
1)深度优先遍历策略
深度优先遍历策略是众所周知的,它与我们的有向图中的深度优先遍历相同,因为网络本身是一个图模型. 深度优先遍历的想法是从一个起始网页开始爬网,然后根据链接逐个爬网,直到无法进一步爬网为止,返回上一页继续跟随该链接.
下面是有向图的深度优先搜索示例:
上面的左图是有向图的,右图是深度优先遍历的搜索过程的. 深度优先遍历的结果是:
2)广度优先搜索策略
广度优先搜索和深度优先搜索的工作方法完全相反. 这个想法是将在新下载的网页中找到的链接直接插入要抓取的URL队列的末尾. 这意味着Web爬网程序将首先对在起始页面中链接的所有页面进行爬网,然后选择其中一个链接页面以继续对在此页面中链接的所有页面进行爬网.
上图是上述示例的有向图的广度优先搜索流程图. 遍历结果为:
v1→v2→v3→v4→v5→v6→v7→v8
从树的结构来看,图的广度优先遍历是树的层次遍历.
3)反向链接搜索策略
反向链接数是指网页被其他Web链接指向的次数. 反向链接的数量指示其他人推荐多少网页内容. 因此,很多时候搜索引擎的爬网系统都会使用该指标来评估网页的重要性,从而确定不同网页的爬网顺序.
在真实的网络环境中,由于存在广告链接和作弊链接,因此反向链接的数量不能与他的一样重要. 因此,搜索引擎倾向于考虑一些可靠的反向链接.
4)大站优先策略
URL队列中要爬网的所有页面均根据它们所属的网站进行分类. 对于要下载大量页面的网站,首选下载. 此策略也称为大站台优先策略.
5)其他搜索策略
一些常见的搜寻器搜索比例还包括部分PageRank搜索策略(根据PageRank分数确定下一个已爬网的URL),OPIC搜索策略(也是一种重要性). 必须指出的最后一件事是,我们可以根据需要设置网页的爬网间隔,以确保不会丢失某些基本的大型网站或活动网站内容.
3. Web搜寻器更新策略
Internet实时变化且高度动态. 网页更新策略主要是决定何时更新先前下载的页面. 共有三种常见的更新策略:
1)历史参考策略
顾名思义,根据页面的过去历史更新数据,可以预测页面将来的更改时间. 通常搜索引擎基本工作原理,通过对泊松过程进行?建模来进行预测.
2)用户体验策略
尽管搜索引擎可以为特定查询返回大量结果,但用户倾向于将注意力集中在结果的前几页上. 因此,爬网系统可以更新实际上在查询结果的前几个页面中的那些网页,然后更新那些后续页面. 此更新策略还需要使用历史信息. 用户体验策略保留了该网页的多个历史版本,并根据过去每次内容更改对搜索质量的影响来获取平均值,并以此值作为确定何时重新抓取的基础.
3)集群抽样策略
上述两种更新策略都有一个前提: 需要网页的历史信息. 存在两个问题: 首先,如果系统为每个系统保存了多个版本的历史信息,无疑会增加很多系统负担. 其次,如果新网页完全没有历史信息,则无法确定更新策略.
此策略认为网页具有许多属性,而具有相似属性的网页可以被视为具有相似的更新频率. 要计算某个类别的网页的更新频率,您只需要采样此类别的网页,并将其更新周期用作整个类别的更新周期即可. 基本思路如下:
4. 分布式爬网系统的结构
通常,爬网系统需要面对整个Internet上数以亿计的网页. 单个搜寻器无法完成此类任务. 通常,需要多个爬网程序一起工作. 通常,爬网系统是分布式的三层结构. 如图所示:
最底层是分布在不同地理位置的数据中心. 在每个数据中心中,都有多个爬网服务器,每个爬网服务器可能具有几组爬网程序. 这构成了基本的分布式爬网系统.
有几种方法可以与数据中心中的不同抓取服务器一起使用:
1)主从服务器
主从结构的基本结构如图所示:
对于主从类型,有专用的主服务器来维护要爬网的URL队列. 它负责每次将URL分发到不同的Slave服务器,并且Slave服务器负责实际的网页下载工作. 除了维护要爬网的URL队列和分发URL外,主服务器还负责协调每个从属服务器的负载. 为了避免某些从属服务器太闲或太累.
在这种模式下,主服务器通常会成为系统瓶颈.
2)点对点
方程的基本结构如图所示:
在这种模式下,所有爬网服务器的分工没有区别. 每个爬网服务器都可以从要爬网的URL队列中获取URL,然后对URL主域名的H进行散列,然后计算H mod m(其中m是服务器数,上图为示例) ,m为3),则计算出的数字是处理URL的主机号.
示例: 假设对于URL,计算器哈希值H = 8,m = 3,然后H mod m = 2,因此编号为2的服务器获取链接. 假设此时服务器0获得了该URL,它将URL转发到服务器2并对其进行爬网.
此模型存在问题. 当服务器死机或添加新服务器时,所有URL的哈希计算结果将改变. 换句话说搜索引擎基本工作原理,这种方法不是很可扩展. 考虑到这种情况,提出了另一种改进计划. 这种改进的方案是一致的散列,以确定服务器的分工. 其基本结构如图所示:
连续哈希对URL的主要域名进行哈希处理并将其映射到0-232范围内的数字. 该范围平均分配给m个服务器,并根据URL主域名的哈希操作值的范围确定哪个服务器正在执行爬网.
如果一台服务器出现问题,则负责该服务器的网页将被顺时针延迟,并被下一台服务器爬网. 在这种情况下,如果一台服务器及时出现问题,其他工作将不会受到影响.