搜索引擎原理(一)之网页抓取与更新
1. 有哪些网页检索维护的方法
主要有宽度(广度)优先,兼顾深度的遍历策略、不重复抓取策略、大站优先策略、非完全PageRank策略、OCIP策略、合作抓取策略等主流的网页抓取策略。 详细内容请参考:搜索引擎爬虫网页抓取策略
非完全PageRank策略(Partial PageRank) 对于已经下载的网页(不完整的互联网页面的子集)内,加上待抓取的URL队列中的URL一起,形成网页集合,在此集合内部进行PageRank计算;计算完成以后,将待抓取URL队列里的网页按照PageRank得分由高到低排序,形成序列就是爬虫接下来应该依次抓取的URL列表。 由于PageRank是一个全局算法,就是当所有网页都被下载完成以后,其计算结果才是可靠的,但是爬虫在抓取过程中只能接触到一部分网页,所以在抓取阶段的网页时无法进行可靠的PageRank计算的,所以叫做非完全PageRank策略。
OCIP策略(Online Page Importance Computation) OCIP字面含义为“在线页面重要性计算”,算是一种改进的PageRank算法。算法开始前,每个互联网页面被赋予相同的数值,每当下载了某个页面P 后,P将自己拥有的数值平均分配给页面中包含的链接,同时清空自己的数值。对于待抓取URL队列中的网页,根据其手头数值大小排序,优先下载数值较大的网页。
2. 网页更新策略方法有哪些?
常见的搜索引擎更新策略有3种:1)历史参考策略;2)用户体验策略;3)聚类抽样策略。
1、历史参考策略 它实际上市给予几个假设:过去频繁更新的网页,将来也会频繁更新。所以为了估算网页的更新时间可以参考历史更新情况。
2、用户体验策略 一般来说,搜索引擎将处理的结果反馈给用户后,绝大多数用户只看其中的前3也左右,搜索引擎可以相对经常更新这部分网页。
3、聚类抽样策略 这种更新策略认为:网页具有一些属性,根据这些属性可以预测其更新的周期,具有相似属性的网页更新周期也类似,于是可以将这些网页归类,同一类别的网站具有相同的更新频率。
3. 何为深度优先,广度优先?
广度优先搜索:广度优先搜索是按照树的层次进行的搜索,如果此层没有搜索完成的情况下不会进行下一层的搜索。
深度优先搜索:深度优先搜索是按照树的深度进行搜索的,所以又叫纵向搜索,在每一层只扩展一个节点,直到为树的规定深度或叶子节点为止。这个便称为深度优先搜索。
4. 深度优先,广度优先优缺点?各自的使用场景? 我先来说说两种算法的不同点。广度优先搜索,适用于所有情况下的搜索,但是深度优先搜索不一定能适用于所有情况下的搜索。因为由于一个有解的问题树可能含有无穷分枝,深度优先搜索如果误入无穷分枝(即深度无限),则不可能找到目标节点。所以,深度优先搜索策略是不完备的。
广度优先搜索适用范围:在未知树深度情况下,用这种算法很保险和安全。在树体系相对小不庞大的时候,广度优先也会更好些。
深度优先搜索适用范围:刚才说了深度优先搜索又自己的缺陷,但是并不代表深度优先搜索没有自己的价值。在树深度已知情况下,并且树体系相当庞大时,深度优先搜索往往会比广度优先搜索优秀,因为比如8*8的马踏棋盘中,如果用广度搜索,必须要记录所有节点的信息,这个存储量一般电脑是达不到的。然而如果用深度优先搜索的时候却能在一个棋盘被判定出来后释放之前的节点内存。