• 信息指纹


    信息指纹:通过提取一个信息的特征,通常是一组词或者一组词+权重,然后根据这组词调用特别的算法例如MD5算法,将之转化为一组代码,这组代码就是标识这段信息的指纹;在抓取阶段,蜘蛛程序为了避免重复抓取,会建立起一张hash表,将抓取的链接存储,我们先来假定直接存储网址,互联网上有5000亿个网页,假定要存储4000亿个网址,一个网址需要(100字符)这需要40TB的空间大小,还有另一个不得不考虑的问题,就是hash表的存储效率只有50%,这需要80TB,假定一个服务器哟100G,这需要800台服务器来存储这个hash表,如果换成一个long行数字需要4000XMath.pow(10,8)X4;

    将url首先转化成一串数字(很好办,url本身就是以整数的方式存储在电脑上的),设定一个函数y=f(x),通过这个函数,可以将这串数字转化为一个独特的且占位要比100个字符少很多的y。如果函数给力,则可以保证每个url只对应一个唯一的y。

    这时的这个y,就是这串url的信息指纹。

    为了让大家理解的更透彻一点,给这个函数一个最最简单的实体,那就是取x的平方,然后得到的数字去掉第一个和最后一个数字,就可以当成是一个简单的指纹。(想要更严谨点的还是看MD5信息指纹和指纹也有一个根本的差别,那就是通过指纹可以判定这个人是谁,通过信息指纹却不能知道它是哪个信息的指纹(有点拗口)。

    搜索引擎:检测网页拷贝,建立在信息指纹的基础之上产生信息指纹;关键算法是伪随机数产生器算法(prng),比较经典的哈希算法有 MD5 和 SHA1 等,它们可以将不定长的信息变成定长的 128 二进位或者 160 二进位随机数。

    搜索引擎判断复制网页一般都基于这么一个思想:为每个网页计算出一组信息指纹(Fingerprint),若两个网页有一定数量相同的信息指纹,则认为这两个网页的内容重叠性很高,也就是说两个网页是内容复制的。

    很多搜索引擎判断内容复制的方法都不太一样,主要是以下两点的不同:

    1、计算信息指纹(Fingerprint)的算法;
    2、判断信息指纹的相似程度的参数。

    在描述具体的算法前,先说清楚两点:
    1、什么是信息指纹?信息指纹就是把网页里面正文信息,提取一定的信息,可以是关键字、词、句子或者段落及其在网页里面的权重等,对它进行加密,如MD5加密,从而形成的一个字符串。信息指纹如同人的指纹,只要内容不相同,信息指纹就不一样。
    2、算法提取的信息不是针对整张网页,而是把网站里面共同的部分如导航条、logo、版权等信息(这些称之为网页的“噪音”)过滤掉后剩下的文本。

    分段签名算法

    这种算法是按照一定的规则把网页切成N段,对每一段进行签名,形成每一段的信息指纹。如果这N个信息指纹里面有M个相同时(m是系统定义的阙值),则认为两者是复制网页。

    这种算法对于小规模的判断复制网页是很好的一种算法,但是对于像google这样海量的搜索引擎来说,算法的复杂度相当高。

    基于关键词的复制网页算法

    像google这类搜索引擎,他在抓取网页的时候都会记下以下网页信息:

    1、网页中出现的关键词(中文分词技术)以及每个关键词的权重(关键词密度);
    2、提取meta descrīption或者每个网页的512个字节的有效文字。
    关于第2点,baidu和google有所不同,google是提取你的meta descrīption,如果没有查询关键字相关的512个字节,而百度是直接提取后者。这一点大家使用过的都有所体会。

    在以下算法描述中,我们约定几个信息指纹变量:

    Pi表示第i个网页;
    该网页权重最高的N个关键词构成集合Ti={t1,t2,...tn},其对应的权重为Wi={w1,w2,...wi}
    摘要信息用Des(Pi)表示,前n个关键词拼成的字符串用Con(Ti)表示,对这n个关键词排序后形成的字符串用Sort(Ti)表示。

    以上信息指纹都用MD5函数进行加密。

    基于关键词的复制网页算法有以下5种:
    1、MD5(Des(Pi))=MD5(Des(Pj)),就是说摘要信息完全一样,i和j两个网页就认为是复制网页;
    2、MD5(Con(Ti))=MD5(Con(Tj)),两个网页前n个关键词及其权重的排序一样,就认为是复制网页;
    3、MD5(Sort(Ti))=MD5(Sort(Tj)),两个网页前n个关键词一样,权重可以不一样,也认为是复制网页。
    4、MD5(Con(Ti))=MD5(Con(Tj))并且Wi-Wj的平方除以Wi和Wj的平方之和小于某个阙值a,则认为两者是复制网页。
    5、MD5(Sort(Ti))=MD5(Sort(Tj))并且Wi-Wj的平方除以Wi和Wj的平方之和小于某个阙值a,则认为两者是复制网页。

    关于第4和第5的那个阙值a,主要是因为前一个判断条件下,还是会有很多网页被误伤,搜索引擎开发根据权重的分布比例进行调节,防止误伤。

  • 相关阅读:
    Axure RP 9 Beta 开放下载(更新激活密钥和汉化包)
    Android 解决NestedScrollView 嵌套 RecyclerView出现的卡顿,上拉刷新无效
    上周热点回顾(8.27-9.2)团队
    上周热点回顾(8.20-8.26)团队
    上周热点回顾(8.13-8.19)团队
    上周热点回顾(8.6-8.12)团队
    阿里云MVP第6期招募与博客园合作启动团队
    上周热点回顾(7.30-8.5)团队
    上周热点回顾(7.23-7.29)团队
    上周热点回顾(7.16-7.22)团队
  • 原文地址:https://www.cnblogs.com/csxf/p/3670263.html
Copyright © 2020-2023  润新知