版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深圳移动数据业务分析挖掘项目详细设计广州星博 第页网络爬虫系统
详细设计说明书
用户单位:承建单位:广州星博信息技术有限公司
修订记录版本日期修订标记修订者说明V0.12010-7-23A陈跃群草拟V0.22010-8-3M陈跃群添加“模块关系图”,“模块描述”,修改部分类图,修改序列图V0.2.12010-8-3M陈跃群修改“common模块时序图”,修改部分编号注:A-添加,M-修改,D-删除,C-审核目录第1章 引言 41.1 目的 41.2 参考资料 4第2章 系统概述 52.1 模块关系图 52.1.1 网页分类子系统 52.1.2 二级域名子系统 8第3章 common模块 103.1 模块描述 103.2 模块类图 103.3 模块序列图 113.4 重要类和接口描述 12第4章 生成种子子系统 154.1 模块描述 154.2 模块类图 164.3 模块序列图 174.4 重要类和接口描述 18第5章 网页数据采集子系统 215.1 Http访问组件模块 215.1.1 模块描述 215.1.2 模块类图 225.1.3 模块序列图 235.1.4 重要类和接口描述 235.2 网页采集URLs/ContentType过滤器、分类器模块 265.2.1 模块描述 265.2.2 模块类图 275.2.3 模块序列图 275.2.4 重要类和接口描述 285.3 网页采集DB接口模块 325.3.1 模块描述 325.3.2 模块类图 325.3.3 模块序列图 335.3.4 重要类和接口描述 335.4 链接抽取逻辑模块 345.4.1 网页数据生成子模块 345.4.2 网页链接抽取子模块 375.4.3 网页链接过滤子模块 40第6章 预处理子系统 446.1 分词模块并建立正向索引模块 446.1.1 模块描述 446.1.2 模块类图 456.1.3 模块序列图 466.1.4 重要类和接口描述 46第7章 归类子系统 497.1 训练分类器模块 497.1.1 模块描述 497.1.2 模块类图 497.1.3 模块序列图 507.1.4 重要类和接口描述 507.2 分类模块 527.2.1 模块描述 527.2.2 模块类图 537.2.3 模块序列图 547.2.4 重要类和接口描述 55第8章 导出子系统 598.1 导出到规则库 598.1.1 业务类型导出到规则库 598.1.2 归类列表导出到规则库 59第9章 二级域名的网页采集 609.1 二级域名Http访问模块 609.1.1 模块描述 609.1.2 模块类图 619.1.3 模块序列图 629.1.4 重要类和接口描述 62第10章 二级域名预处理 6510.1 二级域名建立正向索引 6510.1.1 模块描述 6510.1.2 模块类图 6510.1.3 模块序列图 6610.1.4 重要类和接口描述 66引言目的本说明书的编写目的是为了向用户单位、承建单位的相关人员说明系统总体设计的技术方案,从程序系统的设计角度出发,考虑系统中的整体架构、处理流程、模块划分、功能分配、接口设计、运行环境、数据结构设计和出错处理设计等内容,以向整个设计期提供关于程序系统的逻辑和数据功能实现方式的总体描述,从而作为程序详细设计或编码的基础。设计阶段将以本文档为核心文档。本概要设计说明书的适用读者为:客户代表、业务分析人员、系统架构师、系统开发人员、测试人员。参考资料序号文档名称作者版本/日期1网络爬虫概要设计说明书广州星博V0.4系统概述系统主要是实现对网络中的某个或某几个入口链接进行数据的采集,并按照主题对所采集的URL进行索引及归类,与移动GPRS/TD用户所访问URL进行匹配,从而发掘用户的潜在需求,以及供用户按照关键字检索网络媒体介质和匹配URLs的主题分类等功能。(具体见“网络爬虫概要设计说明书”)模块关系图网页分类子系统爬虫的一个任务是把(十大)门户网站中的二级目录归类到各个相应主题下面。把目录划分到对应的主题的过程,在爬虫系统中称为网页分类的过程。网页分类的过程分为“种子文件生成”、“网页采集”、“预处理”、“分类”等模块,公共模块(common模块)是主线程相关的模块。网页分类子系统各个模块之间的联系如下图(图2-1)所示。common模块:common模块主要是主线程管理各个业务线程实例的产生、启动、停止、监视等功能;种子生成模块:为网页分类服务的种子生成模块读入了既定格式的种子文件,把读到的种子格式化后持久化;该模块和网页采集子系统的接口即为数据库中的链接种子表;网页采集模块:网页采集主要是通过WAP/WWW网络,把种子库里的链接内容爬取下来,并把内容持久化,以便供预处理处理;该模块还有一个任务,就是从爬取到的内容中抽取出链接,放到链接种子库中,以便二次采集;该模块和种子生成模块的数据接口是链接种子表,和下一个预处理模块的接口是封装的链接内容(SeedContent)表;预处理模块:预处理模块是把采集到的网页内容“分词”、“计算权重”、“建立索引”的过程;它和网页采集的交互是接受网页采集封装的网页链接内容(SeedContent);它和分类模块的接口是为分类模块提供计算了特征向量的“文档”库;分类模块:分类是实现网页分类系统的最后也是最重要的一个模块。分类模块分为“训练样本集”、“链接内容分类”和“二级目录划分”等子模块;大体过程是把需要划分主题的网页内容的文档(下称当前文档)和经过训练的样例文档比较,找出当前文档和样例文档中最相似的一份,把找到的这份样例文档的主题类型作为当前文档的主题类型,形成归类类表;形成归类列表后,切分URL中的目录,分类分级计算目录百分比(此内容请参考《网络爬虫概要设计说明书》之3.4.4)。该模块需要的数据是人工维护的“类别库”和未经过训练“样例文档集”,预处理产生的“文档库”;中间产生的数据主要是经过训练的“样例文档集”,最后产生的数据是分好主题类别的目录链接库(CatalogLink)。(图2-1)网页分类子系统描述图二级域名子系统爬虫的另一个任务是给嗅探数据中用户访问的部分二级域名打上标题。该过程在爬虫中称为“二级域名子系统”。二级域名子系统分为“种子生成模块”、“二级域名Http访问模块”和“二级域名建立正向索引”等业务模块,同时也会受common模块管理。二级域名子系统各个模块之间的联系如下图(图2-2)所示。种子生成模块:该模块和网页分类子系统的种子生成模块基本一样;它从嗅探下来的数据库中根据既定的规则筛选出部分二级域名,格式化后存入数据库中,作为种子;该模块和二级域名Http访问模块的接口是链接种子表;二级域名Http访问模块:本模块是爬去种子链接的内容,并把内容持久化的过程;它和种子生成模块的交互数据是链接种子库,和二级域名建立正向索引的接口是二级域名链接内容(DomianContent)表;二级域名建立正向索引:本模块是给二级域名链接内容抽取标题并持久化的过程。它和二级域名Http访问模块的接口是二级域名链接内容(DomianContent)表,最终抽取的标题也更新到DomainContent中去。(图2-2)二级域名子系统描述图common模块模块描述本模块管理着爬虫系统的所有业务活动的线程,实现业务活动线程的启动、停止、状态监控等功能;输入:配置文件关于各类业务线程相关信息(包括线程数,线程睡眠时间等);用户控制台的命令输入;输出:各类业务线程的生命活动控制结果;线程状态监控报告;活动时机:爬虫程序启动时;用户输入命令时;业务线程活动异常时(待扩展);模块类图模块序列图重要类和接口描述主线程说明功能描述主线程组织管理业务线程的类。通过监视控制台输入的命令,控制业务线程的活动;主要方法描述run:按照一定的策略生成各类业务线程,然后等待用户控制台的输入,通过命令管理业务线程的生命活动;涉及数据备注InstanceManager说明功能描述InstanceManager线程实例管理类,负责新增线程实例和删去线程实例;主要方法描述instanceCreate:根据参数指定的类名称,实例化并把实例引用放入runnerList和threadList列表中;instanceRemove:根据参数指定的类名,停止该类的一条线程,并从runnerList和threadList删去;该方法先调用IRunner接口的stop方法,然后睡眠预定的时间,然后通过IRunner接口的isEnd()方法检测线程时候正常结束,如果未正常结束则调用Thread的stop方法结束线程,最后从runnerList和threadList列表中删除实例引用;stopAll:根据参数指定的类名,停止该类的所有线程,并从runnerList和threadList删去;其过程类似于instanceRemove,不同的是本方法停止并删除所有实例;涉及数据className:参数指定的线程类名;runnerList:IRunner接口的列表;threadList:Thread列表;备注各个方法都应该先锁定runnerList,再锁定threadList,一定要按照这个顺序加锁,防止线程死锁;InstanceCreator说明功能描述InstanceCreator为指定的业务线程类增加新线程实例;主要方法描述InstanceCreator:构造方法中参数为线程类的类名;run:线程接口方法,调用InstanceManager的instanceCreate方法生成新线程;涉及数据className:参数指定的线程类名;runnerList:IRunner接口的列表;threadList:Thread列表;备注InstanceRemover说明功能描述InstanceRemover停止指定的线程类的一条线程;主要方法描述InstanceRemover:扫描目录,读取种子文件内容;run:线程接口方法,调用InstanceManager的instanceRemove方法除去一条线程实例;涉及数据className:参数指定的线程类名;runnerList:IRunner接口的列表;threadList:Thread列表;备注InstanceAllRemover说明功能描述InstanceAllRemover停止指定的线程类的所有线程;主要方法描述InstanceAllRemover:扫描目录,读取种子文件内容;run:线程接口方法,调用InstanceManager的instanceRemove方法除去一条线程实例;涉及数据className:参数指定的线程类名;runnerList:IRunner接口的列表;threadList:Thread列表;备注ThreadManager说明功能描述ThreadManager存放各类线程的列表;主要方法描述涉及数据xxxRunnerList:存放IRunner接口的线程的引用;xxxThreadList:存放Thread类的引用;备注生成种子子系统模块描述本子模块是爬虫搜索的业务起点。本模块从时间轴上看有两个阶段的任务:一是整理种子的输入;二是把种子load到队列中。每个任务业务上分为为网页采集服务和为二级域名采集服务两种业务。第一个任务可描述为:通过整理用户维护的源种子文件并持久化,形成网页采集种子;或从嗅探数据中过滤获取需要的二级域名种子并持久化,形成二级域名采集种子。第二个任务可描述为:通过同步机制,将持久化的种子load到内存队列中。如下图(图4-1)所示。(图4-1)生成种子模块描述图输入:网页采集种子生成子模块:用户维护的种子链接文件;二级域名采集种子生成子模块:嗅探数据;输出:网页采集种子生成子模块:与持久化的种子同步的队列;二级域名采集种子生成子模块:与持久化的种子同步的队列;运行时机:主线程启动时;用户维护的种子文件的目录有新种子文件时;配置文件指定启动为二级域名采集种子生成模块收集种子时;模块类图【相关说明】:IRunner和RealRunner为线程活动控制相关类,在其他模块中亦然;FileSeedReformater和DBSeedScanner通过代理模式使用RealRunner;为业务相关类;SeedDBHandle为DB接口类;还需要两类把种子自动装载到DownloadQueue/DomainDownloadQueue的线程;模块序列图整理种子阶段:【相关说明】: 重要类和接口描述AbstractSeedProcessor说明功能描述AbstractSeedProcessor处理种子的超类;通过Proxy模式使用RealRunner来实现IRunner接口,IRunner接口是其生命活动控制的接口,另实现Runnable使其可以具有线程生命;主要方法描述read:抽象方法,该方法在子类实现时,分为读文件和读数据库两种数据来源;涉及数据备注该类未实现Runnable的run方法;FileSeedReformater类:说明功能描述FileSeedReformater是处理用户输入的种子数据,格式化后写入DB;继承了AbstractSeedProcessor,而AbstractSeedProcessor帮它实现了IRunner接口的所有方法,另该类实现Runnable使其可以具有线程生命;主要方法描述read:overwrite了AbstractSeedProcessor的方法;扫描目录,读取种子文件内容;run:线程接口方法,调用read、backup和SeedDBHandle的import方法;backup:private方法,备份处理完成的种子文件,并删除当前种子文件;涉及数据seedFileDir:种子文件目录;seeds:种子,表映射类;备注DBSeedScanner说明功能描述DBSeedScanner是处理嗅探数据来源的种子数据,格式化后写入DB;继承了AbstractSeedProcessor,而AbstractSeedProcessor帮它实现了IRunner接口的所有方法,另实现Runnable使其可以具有线程生命;主要方法描述filter:过滤嗅探数据,将二级域名的数据过滤出来;read:实现了AbstractSeedProcessor的方法;根据配置的策略,调用SeedDBHandle的scan方法读取数据库中的二级域名的信息作为种子;run:线程接口方法,调用filter和SeedDBHandle的scan、import方法;涉及数据gnAppData:嗅探数据,表映射类seeds:种子,表映射类;备注SeedDBHandle说明功能描述SeedDBHandle是DB接口类,按照Seed的格式写入DB;主要方法描述scan:扫描嗅探数据,将二级域名的数据扫描出来;import:根据Seed数据格式,写入DB;loadSeeds,deleteSeed,updateSeed,addSeed:增删改种子和load所有种子;getMaxOrder,getMinOrder:取得种子的最大顺序值和最小顺序值;涉及数据seeds:种子,表映射类;备注网页数据采集子系统Http访问组件模块模块描述本模块负责http连接和获取http头信息。业务逻辑为:从网页采集种子队列中读取种子,然后通过httpClient连接外部wap/www网络,并把http头信息保存到HttpHeader中,最后封装httpHeader,连接资源的引用等信息存入HeaderQueue中。输入:网页采集种子;输出:封装的HttpHeader和连接资源;运行时机:主线程启动该业务线程后;且种子队列中有待访问种子;且HeaderQueue未超过警戒长度;模块类图模块序列图重要类和接口描述IDownloadQueue说明功能描述IDownloadQueue是种子队列接口,其实现类应设有待访问种子队列和已访问种子队列;主要方法描述getNextInQueue:取出待访问队列中的下一个种子(Seed);抛出CrawlerServiceException(RuntimeException的子类)enQueue:种子Seed入待访问队列,若种子已经访问过,则入队列不成功,种子被废弃;成功返回true,失败返回false;抛出CrawlerServiceExceptionsize:待访问种子队列长度;visitedSize:已访问种子队列大小涉及数据seed:种子,表映射类;备注StaticDownloadQueue说明功能描述StaticDownloadQueue是种子队列管理类,当中使用类似于单例模式拥有IDownloadQueue的一个实例instance,访问IDownloadQueue通过锁定StaticDownloadQueue的instance来实现同步与互斥;主要方法描述涉及数据instance:IDownloadQueue的静态实例;备注HttpClientCallback说明功能描述HttpClientCallback连接wap和www网络,处理取得的资源信息的类,和HttpClientTemplate结合使用;主要方法描述processHttpRequest:通过回调访问wap、www的网络资源,把关注的http头信息放入HttpHeader中,把http内容流的引用放入HttpContent中,URL及其描述文字放入Seed中;涉及数据seeds:种子,表映射类;httpHeader:存放http头信息;httpContent:存放http内容Stream的引用;备注HttpClientTemplate说明功能描述HttpClientTemplate是HttpClinet的封装,封装了URL,HttpClient实例,Http拦截器,http方法等资源;主要方法描述HttpClientTemplate:构造方法,根据资源初始化HttpClient实例,初始化Http方法,初始化Http拦截器;execute:执行HttpClientCallback的业务逻辑;close:释放资源涉及数据seeds:种子,表映射类;备注HeaderSpider说明功能描述HeaderSpider是具有生命的爬虫,主要是根据URL种子爬去其HttpHeader,并将HttpHeader存入队列中;主要方法描述getSeed:从待访问种子队列中取得种子,并更新数据库待访问和已访问种子列表;crawl:爬取数据,相关数据分别存入HttpHeader,HttpContent,Seed中;init:初始化爬虫,实例化HttpClinetCallback;涉及数据seeds:种子,表映射类;httpHeader:存放http头信息;httpContent:存放http内容Stream的引用;备注IHeaderQueue说明功能描述IHeaderQueue是暂时存放HttpHeader以及HttpClientTemplate实例引用的队列接口;主要方法描述getNextInQueue:取出HttpHeader队列中的下一个种子(HttpHeaderExt);抛出CrawlerServiceException(RuntimeException的子类);enQueue:封装的Http头和链接资源的HttpHeader入队列;成功返回true,失败返回false;抛出CrawlerServiceException;size:队列大小;涉及数据httpHeader:存放http头信息;httpClientTemplate:保存并管理链接资源的模板备注StaticHeaderQueue说明功能描述StaticHeaderQueue是封装的HttpHeader队列管理类,当中使用类似于单例模式拥有IHeaderQueue的一个实例instance,访问IHeaderQueue通过锁定StaticHeaderQueue的instance来实现同步与互斥;主要方法描述涉及数据instance:IHeaderQueue的静态实例备注网页采集URLs/ContentType过滤器、分类器模块模块描述本模块负责给访问到的Http连接按网页链接属性过滤和分类。本模块的一般过程为:先读取配置文件的过滤接口的实现类列表,然后从HeaderQueue读取http头信息,然后根据头信息过滤,过滤通过的URL封装到SeedContent中,过滤不通过的丢弃同时关闭http连接;接着查看链接是网页链接还是附件链接,如果是附件则再封装附件信息到SeedContent中,最后封装过滤分类完成的链接信息(SeedContent)和http连接资源的引用到ContentWraper中,并入SeedContentQueue队列中。输入:httpHeader;http连接资源的引用;配置信息;输出:封装的链接信息和http连接资源运行时机:主线程启动业务线程后;HeaderQueue有数据时;链接信息队列(SeedContentQueue)未超过警戒长度;模块类图模块序列图过滤:分类:重要类和接口描述ContentTypeRunner说明功能描述ContentTypeRunner是引导过滤器、分类器完成任务的线程;主要方法描述encloseURL:封装HttpHeader和URL到SeedContent;run:组织过滤和分类的业务逻辑;涉及数据seeds:种子,表映射类;httpHeader:存放http头信息;httpContent:存放http内容Stream的引用;seedContent:URLs/ContentType过滤完成的封装的URL;备注ContentTypeFiltrator说明功能描述ContentTypeFiltrator通过其组合的IContentTypeFilter实例,分析Httpheader,然后对ContentType进行过滤。组合的IContentTypeFilter中有两类:一类是pass型过滤,符合该IContentTypeFilter实例的pass条件的即可放行;另一个类是nonpass型过滤,符合IContentTypeFilter拦截条件的即可阻止,同时符合这两组IContentTypeFilter过滤条件的才能最终通过。主要方法描述config:配置并实例化IContentTypeFilter实例列表;readHeader:读取httpheader的contentType等信息;filter:遍历IcontentTypeFilter实例列表,调用其filter方法对httpheader进行过滤;涉及数据httpHeader:存放http头信息;备注IContentTypeFilter说明功能描述IContentTypeFilter分析Httpheader,然后对ContentType进行过滤;主要方法描述filter:遍历IcontentTypeFilter实例列表,调用其filter方法对httpheader进行过滤;涉及数据httpHeader:存放http头信息;备注SeedContent说明功能描述SeedContent封装URLs/ContentType过滤完成的URL及其对应的内容;主要方法描述涉及数据url:URL;contentType:存放http头的contentType信息;content:存放http内容;……备注HttpHeader说明功能描述HttpHeader存放http头信息;主要方法描述涉及数据contentType:httpcontenttype;contentLength:httpcontentlength;备注IContentTypeClassifier说明功能描述IContentTypeClassifier提供对链接按照网页属性ContentType分类功能的URLs/ContentType分类器;主要方法描述config:配置关注的网页附件类型(后缀名),读取httpheader;isTextHtml:判断http链接属性是不是text/html;isAttachment:网页属性是否是附件;getAttachmentExt:如果网页属性是附件,则返回附件后缀名,否则返回null;isInterestAttach:是否是关注范围内的附件;encloseAttachmentPath:为关注的附件类型产生存放路径涉及数据httpHeader:存放http头信息;seedContent:URLs/ContentType过滤完成的封装的URL备注ISeedContentQueue说明功能描述ISeedContentQueue链接内容队列接口;主要方法描述getNextInQueue:取出SeedContent队列中的下一个封装了的链接内容和连接资源的ContentWraper;抛出CrawlerServiceException(RuntimeException的子类);enQueue:封装的链接内容(SeedContent)和链接资源的ContentWraper入队列;成功返回true,失败返回false;抛出CrawlerServiceException;size:队列大小;涉及数据contentWraper:封装了httpHeader、httpClientTemplate的链接内容包装器备注StaticSeedContentQueue说明功能描述StaticSeedContentQueue是封装的ContentWraper队列管理类,当中使用类似于单例模式拥有ISeedContentQueue的一个实例instance,访问ISeedContentQueue通过锁定StaticSeedContentQueue的instance来实现同步与互斥;主要方法描述涉及数据instance:IHeaderQueue的静态实例备注ContentWraper说明功能描述ContentWraper是封装的拥有http资源的httpClientTemplate和链接内容的链接内容Wraper,;主要方法描述涉及数据seedContent:封装URLs/ContentType过滤完成的URL及其对应的内容;httpClientTemplate:管理http连接资源的模板;httpHeader:http头;httpContent:http内容;备注网页采集DB接口模块模块描述本模块实现给网页采集到的数据持久化。输入:封装了网页链接信息的SeedContent运行时机:内容爬取线程(ContentSpider)采集到网页数据之后(参见“网页数据生成模块”序列图)模块类图模块序列图重要类和接口描述ContentDBHandle说明功能描述ContentDBHandle提供存取DB中SeedContent的记录;主要方法描述add、update、delete、findNextOne,find:增删改查询操作;涉及数据seedContent:URLs/ContentType过滤完成的封装的URL;备注ContentSpider说明功能描述ContentSpider是具有生命的链接内容爬虫;主要方法描述saveSeedContent:保存经过URLs/ContentType过滤和生成了网页数据的seedContent;该方法调用了ContentDBHandle的add方法;saveSeedContent方法的调用时机在网页数据生成模块的其他操作中,详细看“网页数据生成模块”之“模块序列图”;涉及数据seedContent:URLs/ContentType过滤完成的封装的URL;备注链接抽取逻辑模块网页数据生成子模块模块描述本模块负责读取链接的内容。其一般过程为:读取配置文件关于缓存大小和所需保存的内容的最大长度等信息,然后通过http链接读取内容(网页内容或者附件内容),再通过DB接口持久化,最后释放连接资源。输入:配置文件关于缓存大小和所需保存的内容的最大长度等信息;ContentWraper:封装过滤分类完成的链接信息(SeedContent)和http连接资源的引用;输出:完整的链接内容的信息(SeedContent),持久化;运行时机:主线程启动业务线程后;网页采集URL/ContentType过滤分类完成后;SeedContentQueue队列中有数据;模块类图模块序列图重要类和接口描述ContentReader说明功能描述ContentReader提供读取html网页内容的功能;主要方法描述config:配置读取流的缓存大小,内容的最大保存长度;readContent:读取http内容,存入seedContent,并存入DB中;close:读取完成后,或者出现异常后,关闭流;涉及数据seeds:种子,表映射类;httpHeader:存放http头信息;httpContent:存放http内容Stream的引用;seedContent:URLs/ContentType过滤完成的封装的URL;备注网页链接抽取子模块模块描述本模块负责抽取网页内容中的链接。其一般过程为:从存放网页内容的数据库中读取内容,使用HTMLParser抽取网页内容的链接,然后把抽取出来的链接放入队列中。输入:数据库中的网页内容(SeedContent);输出:链接(LinkQueue);运行时机:主线程启动业务线程后;网页内容库中有数据;链接队列未超出警戒长度;模块类图模块序列图重要类和接口描述LinkExtractor说明功能描述LinkExtractor具有生命活动的链接抽取类;主要方法描述readAndCopy:从DB中读取内容,并复制一份到内存中;extract:抽取http内容中的链接,其过程调用了Parser、ContentDBHandle等类的方法;涉及数据seedContent:URLs/ContentType过滤完成的封装的URL;linkSeed:链接及其描述文字的文档,其后需要转化为Seed,存入种子列表中;备注Parser说明功能描述Parserorg.htmlparser.Parser,开源包,html内容解析器;主要方法描述extractAllNodesThatMatch:根据过滤器的设置,过滤html元素;本例用来过滤Link的元素;涉及数据seedContent:URLs/ContentType过滤完成的封装的URL;备注ILinkQueue说明功能描述ILinkQueue暂时存放抽取出来的链接的队列接口;主要方法描述enQueue:入队操作;getNextInQueue:出队操作;size:队列大小;涉及数据linkSeed:链接及其描述文字的文档,其后需要转化为Seed,存入种子列表中;备注StaticLinkQueue说明功能描述StaticLinkQueue是ILinkQueue的管理类,类似于DownloadQueue和IDownloadQueue的关系,拥有ILinkQueue的静态实例instance,访问ILinkQueue时通过锁定StaticLinkQueue的instance来实现互斥与同步;主要方法描述涉及数据instance:ILinkQueue的静态实例;备注LinkSeed说明功能描述LinkSeed链接种子;主要方法描述涉及数据url:URL;title:描述链接的文字;备注网页链接过滤子模块模块描述本模块负责对网页链接抽取模块中抽取出来的链接进行过滤并存入网页采集种子队列。其一般过程为:读取配置文件中关于过滤接口的实现类列表信息,读取链接队列,对链接执行过滤,过滤通过的同步到网页采集种子队列中,过滤不通过的丢弃。输入:配置文件中关于过滤接口的实现类列表信息;网页链接抽取模块中抽取出来的链接(LinkQueue);输出:网页采集种子;运行时机:业务线程启动后;抽取的链接队列(LinkQueue)有数据;模块类图模块序列图重要类和接口描述LinkFiltrator说明功能描述LinkFiltrator链接过滤线程;主要方法描述config:读取配置文件,实例化filter列表,配置过滤规则;filter:组织过滤逻辑,其过程为:锁定LinkQueue的instance,读取ILinkQueue,为ILinkFilter设置链接种子,执行ILinkFilter的filter操作,锁定DownloadQueue的instance,入队IDownloadQueue,释放DownloadQueue的instance锁,释放LinkQueue的instance锁;涉及数据linkSeed:链接及其描述文字的文档,其后需要转化为Seed,存入种子列表中;seed:种子,表映射类;备注ILinkFilter说明功能描述IlinkFilter过滤链接的接口;主要方法描述filter:过滤操作;ILinkFilter实例的逻辑决定了其过滤规则;涉及数据linkSeed:链接及其描述文字的文档,其后需要转化为Seed,存入种子列表中;备注预处理子系统分词模块并建立正向索引模块模块描述本模块负责把网页采集到的内容进行分词和建立链接到文档的正向索引结构。其一般过程为:从存放网页内容(SeedContent)的数据库中读取内容,分词,计算权重,最后持久化。输入:网页内容(SeedContent);输出:用向量表示的网页内容(SeedContent);运行时机:业务线程启动后;网页内容库中有数据;模块类图模块序列图重要类和接口描述Segmentation说明功能描述Segmentation组织分词逻辑的分词线程;主要方法描述readContent:读取DB中一条SeedContent记录;segment:组织分词逻辑,调用ContentDBHandle、IKSegmentation、ISegmentationQueue等类的方法;涉及数据seedContent:DB中URLs/ContentType过滤完成的封装的URL;备注StaticSegmentationQueue说明功能描述StaticSegmentationQueueISegmentationQueue的管理类,拥有ISegmentationQueue的静态实例instance,Segmentation线程通过锁定instance实现互斥;主要方法描述涉及数据instance:ISegmentationQueue的静态实例;备注ISegmentationQueue说明功能描述ISegmentationQueue暂时存放分词完成的SeedContent的队列;主要方法描述enQueue:SeedContent入队操作;getNextInQueue:出队操作;size:队列大小;涉及数据seedContent:分词完成的封装的URL;备注IKSegmentation说明功能描述IKSegmentationorg.wltea.analyzer.IKSegmentation,IKAnalyzer的分词类;主要方法描述next:获取下一个语义单元;reset:重置分词器到初始状态;涉及数据seedContent:分词完成的封装的URL;备注PageIndexer说明功能描述PageIndexer提供给网页信息建立正向索引的过程;主要方法描述readSeedContent:读取分词后的网页信息;frequence:计算分词的词频;storeSeedContent:将计算好词频的分词存入数据库中;涉及数据seedContent:分词完成的封装的URL;备注归类子系统训练分类器模块模块描述本模块负责对原始的样例文档训练后用向量表示文档,供分类模块参考。其一般过程为:读取未训练的文档内容,分词,计算权重,形成训练后的文档,并持久化。输入:未经训练的样例文档;输出:训练完成的样例文档;运行时机:主线程启动该业务线程后;数据库中仍有未训练样例文档;模块类图模块序列图重要类和接口描述Trainner说明功能描述Trainner训练器;主要方法描述readNextContent:读取样例文档信息;segmentation:分词;调用IKSegmentation分词;frequence:计算词项的词频;storeTrainingContent:将训练好的文档存入DB中;涉及数据trainningContent:封装的样例文档内容;备注TrainingDBHandle说明功能描述TrainingDBHandle样例文档DB交互接口;主要方法描述add,update,delete:增删改操作;find:按处理的状态查找;涉及数据trainningContent:封装的样例文档内容;备注TrainingContent说明功能描述TrainingContent样例文档;主要方法描述涉及数据content:文档内容;typeId:类型ID;status:训练状态,0/1,未训练/已训练sequence:样本序列;备注BusinessType说明功能描述BusinessType业务类型;主要方法描述涉及数据typaName:类型名字;typeId:类型ID;typeDomain:类型归属域;备注TypeDomain说明功能描述TypeDomain业务类型;主要方法描述涉及数据domainName:类型域名字;domainId:类型域ID;备注分类模块模块描述本模块提供对链接分类(打上主题类别),并计算二级目录和主题类别的关系的功能。本模块有两个阶段的任务:一是对URL打上主题类别,此时的URL是详细URL,并未做截取;二是截取详细URL,计算截取出来的URL的各个类别所占百分比(详细描述请参考《网络爬虫概要设计说明书》之3.4.4)。第一个任务的一般过程为:取出需要分类的文档(下称当前文档),计算当前文档和样例文档集的每个文档的相似度,选择相似度最高的类别,持久化;第二个任务的一般过程为:把第一个任务完成的数据导入内存中,对每个URL截取一定深度的目录,把目录相同的作一组,计算每组中在各个类别所占的百分比即可。输入:用向量表示的网页内容(SeedContent);输出:分类后的网页内容;中间数据:分类后但未做二级目录截取的网页内容;运行时机:第一个任务(对URL打上主题类别):主线程启动本业务线程后;网页内容库中有预处理完成的数据;第二个任务(截取URL,计算百分比):主线程启动本业务线程后;第一个任务完成后;模块类图对URL打上主题类别(分类):对URL作截取二级域名二级目录的分类模块序列图对URL未作截取二级域名二级目录的分类:对URL作截取二级域名二级目录的分类重要类和接口描述ContentClassifier说明功能描述ContentClassifier为text/html类型的网页归类到预先定义的类别下的分类器;主要方法描述calculateSim:计算当前文档和样例文档间的余弦相似度值;selectMaxSim:选取与当前文档相似度最高的样例文档的类别作为当前文档的分类类别;storeContent:封转URL链接与其类别信息,写入DB中resetStatus:重置simList和maxSim的状态;涉及数据simList:封装的样例文档与当前文档的相识度列表;该列表由calculateSim方法生成;maxSim:封装的与当前文档相似度最高的样例文档的实例;由selectMaxSim方法生成;备注ClassifiedContentDBHandle说明功能描述ClassifiedContentDBHandle存取分类完成后的链接信息;主要方法描述add,update,delete:增删改操作;find:根据逻辑主键查找;findDistinctURL:查找目录级数匹配的URL;countByURL:计算链接所占的百分比;涉及数据classifiedContent:分类后的URL链接及其分类信息;备注findDistinctURL(StringmatchSql){select*fromClassifiedContentwhereurllike‘matchSql’;-->>List<ClassifiedContent>contents;write(contents)totable详细URL链接及其分类信息之第四级目录表(4thCatalogLink);selectdistinct(4thurl),count(*)from4thCatalogLinkgroupbydistinct(4thurl);}BusinessTypeDBHandle说明功能描述BusinessTypeDBHandle业务类型DB接口;主要方法描述add,update,delete:增删改;load:load所有的业务类型到List中;find:按照逻辑主键查找业务类型;涉及数据businessType:业务类型;备注TypeDoaminDBHandle说明功能描述TypeDoaminDBHandle业务类型的高层次的归类DB接口;主要方法描述add,update,delete:增删改操作;find:按照逻辑主键查找;涉及数据typeDomain:类型域,对业务类型的高层次分类;备注ClassifiedContent说明功能描述ClassifiedContent分类后的链接内容;主要方法描述涉及数据url:URL;content:内容;contentType:网页属性;businessType:业务类型;trainingContentId:相似的训练样本ID;kNNValue:当前文档和最相似的样例文档的相似度值;备注CatalogCounter说明功能描述CatalogCounter链接按目录分,计算某级目录在各个分类所占的百分比
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 说课模板及框架图
- 人教部编版四年级语文上册第20课《陀螺》精美课件
- 算法设计与分析 课件 5.5.1-动态规划应用-矩阵连乘-问题描述和分析
- 2024年伊春客运从业资格证理论考试题
- 2024年呼和浩特客运资格考试考题题库答案
- 2024年河池客运资格证考试试题模拟
- 吉首大学《教师综合素质强化》2021-2022学年第一学期期末试卷
- 吉首大学《程序设计基础实验》2021-2022学年期末试卷
- 《机床夹具设计》试卷22
- 吉林艺术学院《艺术专题策划》2021-2022学年第一学期期末试卷
- 分包单位资格报审表-填写模板
- 城市经济学习题与答案
- 马工程《马克思主义发展史》课后习题答案
- 《培养良好的卫生习惯》主题班会(30张)课件
- 1到50带圈数字直接复制
- 医学学员沟通和接诊能力面试评分表
- 创业指导师培训计划
- 幼儿园中班数学《有趣的图形》课件
- 四年级上册数学课件-4.6 整数的四则运算(运算定律)▏沪教版 (共15张PPT)
- 《饲料标签》国标
- DB11-415-2016危险货物道路运输安全技术要求
评论
0/150
提交评论