基于nutch的新闻主题搜索引擎的设计与实现毕业论文(编辑修改稿)内容摘要:
一个 jj 文本由下面几个部分构成: Options{}部分:这个部分对产生的语法分析器的特性进行说明,例如向前看的 token 的个数 (用来解除冲突 )。 这一部分是可以省略的,因为每一个选项都山东大学本科毕业论文 7 有默认值,当我们没有对某个选项进行说明时,它就采用默认值。 也可以把这些选项作为 JavaCC 命令的参数来启动 JavaCC,可以达到同样的效果。 分析器类的声明:这个部分指定了分析器类的名字,以及其他类中成员的声明。 这个部分是必须有的。 这个部分的声明如下: PARSER_BEGIN(elassname) Classelassname{ } PARSER_END(classname)[8] 词法部分的声明:这里面有四类: SKIP、 TOKEN、 SPECIALJOKEN、 MORE。 其中, SKIP 用来说明被忽略的串, TOKEN 用来说明在词法层次上识别的 token。 在词法声明部分,以 开头的 token 只是在词法分析时使用,不能作为语 法分析的输入,也就是说,它相对词法分析是局部的。 语法声明和动作代码:这一部分生成的代码会直接插入分析器类声明的结束括号之前。 一般而言,语法中的每一个非终结符都对应一个函数。 以上说明的是 jj 文件的组成部分,下面再说明一下 jj 文件中语法的表示方法。 JavaCC 中的语法表示吸收了 UNIX 中正规文法的一些记号: []:其中的内容是可选的。 +:前面的内容出现一次或多次。 :前后构成的闭区间。 *:前面的内容出现 0 次或多次。 ?:前面的内容出现 0 次或一次。 ~:后面的内容的补。 | :前面或后面。 ():改变 运算的优先级,把其中的内容作为一个整体 [9]。 利用 JavaCC 构造中文分析模块: JavaCC 是根据西方语言的形式文法理论设计的,不能直接解决中文问题。 当仔细研究后,发现所谓的“中文问题”实际上就是如何把上下文无关文法转变为上下文相关文法。 EBNF 当然不能解决这个问题。 通过写入 Java 代码,用各种对象和标志变量制作特殊的“上下文”环境,就可以实现 JavaCC 的中文分词。 山东大学本科毕业论文 8 Nutch 原来的脚本在 TOKEN 段进行了精细的刻画,对于英文单词、主机地址、电子邮件地址、数字、缩写等各种格式都进行了考虑。 只需利用中文 分词功能,直接传入中文句子,得到 ArrayList 类型的返回结果。 因此,所做的工作就是事先分出一个全部是中文的字符串,这一点通过下面的定义实现: CHINESE: (CJK)+ (“”| CJK) CJK: [ “ \u3040” “ \u318f“, “ \u3300” “ \u337f”, “ \u3400” “ \u3d2d”, “ \u4e00” “ \u9fff”, “ \uf900”“\ufaff” ] 上面的 CHINESE 的定义为:由汉字开头,包含汉字或空格的最长的字符串,而汉字则定义为 CJK。 CJK 即中国、日本、朝鲜和韩国使用的中国汉字的总称,全称为 CJK Ideographs(CJK 象形文字 ),这是 Unieode 标准所定义的 [10]。 Tomcat 简介 用户一般通过浏览器进行查询,这就需要系统提供 Web 服务器并且与索引数据库进行连接。 用户在浏览器中输入查询条件, Web 服务器接收到用户的查询条件后在索引数据库中进行查询、排列然后返回给用户。 Web 服务器是在网络中为实现信息发布、资料查询、数据处理等诸多应用搭建基本平台的服务器。 在Web 页面处理中大致可分为三个步骤,第一步, Web 浏 览器向一个特定的服务器发出 Web 页面请求;第二步, Web 服务器接收到 Web 页面请求后,寻找所请求的 Web 页面,并将所请求的 Web 页面传送给 Web 浏览器;第三步, Web 服务器接收到所请求的 Web 页面,并将它显示出来。 我们选择 Tomcat 的原因是因为它不仅仅是一个 Servlet 容器,也具有传统的 Web 服务器的功能,是 Apache 基金会的 Jakarta 项目中的一个核心项目,由 Apache、 Sun 和其它一些公司及个人山东大学本科毕业论文 9 共同开发而成。 由于有了 Sun 的参与和支持,最新的 Servlet 和 Jsp 规范总能在Tomcat 中得到体 现。 本系统中用到的 完整地实现了 和 JavaServer 规范 [11]。 由于 Java 的跨平台特性,基于 Java 的 Tomcat 也具有跨平台性。 与传统的桌面应用程序不同, Tomcat 中的应用程序是一个 WAR(Web Archive)文件。 WAR 是 Sun 提出的一种 Web 应用程序格式,与 JAR 类似,也是许多文件的一个压缩包。 这个包中的文件按一定目录结构来组织:通常其根目录下包含有 Html 和 Jsp 文件或者包含这两种文件的目录,另外还会有一个WEBINF 目 录,这个目录很重要。 在 WEBINF 目录下有一个 文件和一个 classes 目录, 是这个应用的配置文件,而 classes 目录下则包含编译好的 Servlet 类和 Jsp 或 Servlet 所依赖的其它类 (如 JavaBean)。 通常这些所依赖的类也可以打包成 JAR 放到 WEBINF 下的 lib 目录下,当然也可以放到系统的CLASSPATH 中,但那样移植和管理起来不方便。 Tomcat 能处理 Html 页面。 在 Tomcat 中,可以利用 Servlet 提供的事件监听器功能,对应用或者 Session 实行监听。 Tomcat 也提供其它的一些特征,如与 SSL集成到一块,实现安全传输。 Tomcat 与应用服务器的主要区别是:应用服务器提供更多的 J2EE 特征,如 EJB, JMS, JAAS 等,同时也支持 Jsp 和 Servlet。 而Tomcat 功能则没有那么强大,它不提供 EJB 等支持。 但如果与 JBoss(一个开源的应用服务器 )集成到一块,则可以实现 J2EE 的全部功能。 既然应用服务器具有Tomcat 的功能,那么 Tomcat 有没有存在的必要呢 ?事实上,我们的很多中小应用不需要采用 EJB 等技术, Jsp 和 Servlet 己经足够,这时如果 用应用服务器就有些浪费了。 而 Tomcat 短小精悍,配置方便,能满足我们的需求。 Nutch 介绍 系统架构 总体上 Nutch 可以分为 2 个部分:抓取部分和搜索部分。 抓取部分抓取页面并把抓取回来的数据做成倒排索引,搜索部分则搜索倒排索引以回答用户的请求。 抓取部分和搜索部分的接口是索引,两者都使用索引中的字段。 抓取部分和山东大学本科毕业论文 10 搜索部分可以分别位于不同的机器上。 下面详细介绍一下抓取部分组成。 抓取部分是由 Nutch 的抓取工具驱动的。 这组工具用来建立和维护几个不同的数据结构: WebDB, segment, index。 1. WebDB。 是一个特殊存储数据结构,保存被抓取网站数据的结构和属性,只被抓取程序使用,搜索程序并不使用它。 WebDB 存储 2 种实体:页面和链接。 页面表示网络上的一个网页,这个网页的 URL 作为标识被索引,同时建立一个对网页内容的 MDS 哈希签名,跟网页相关的其它内容也被存储,主要包括:页面中的链接数量 (外链接 )、页面抓取信息 (在页面被重复抓取的情况下 )、表示页面级别的分数 Score。 链接表示从一个网页的链接到其它网页的链接。 因此 WebDB 可以说是一个网络图,页面作为节点,链接是边。 WebDB 由以下数据组成: a、爬行数据库 (crawdb):包含所有 Nutch 已知的 URL,这个 URL 是否被爬过,如果被爬过,是什么时候。 b、链接数据库 (linkdb):这里面包含的信息是每个 URL 己知的链接信息。 WebDB 里有 4 个文件,在物理视图上是文件夹: pagesByURL:按 URL 排序的 page 对象数组 pageSByMDS:按 MD5 排序的 page 对象数组 linksByURL:按 URL 排序的 Link 对象数组 linksByMDS:按 MD5 排序的 Link 对象数组 2. segment。 被索引的网页集合。 每个 segment 由 5 个文件夹组成,如果建立了索引就是六个文件夹。 其中每个文件夹是一个 ArrayFile 对象。 Segment 的Fetehlist 保存的是从 WebDB 中生成的抓取程序使用的 URL 列表。 Fetcher 文件夹里保存的是抓取状态信息,输出数据是从 fetchlist 中抓取到的网页。 Fetcher的输出数据先被索引,索引后的结果存储在 segment中。 文件夹 Content里保存抓取回来的网页内容,包括 头信息和其它元信息。 搜索时,如果选查看缓存页面,就从此处读数据。 parse_data 文件夹里保存的是从 网页中解析出来的一些数据,例如元数据。 parse_text 文件夹中保存从网页中解析出来的文本数据。 Segment 的生命周期是有限制的,当下一轮抓取开始后它就没有用了。 默认的重新抓取间隔是 30 天。 因此可以删除超过这个时间期限的山东大学本科毕业论文 11 segment,而且也可以节省不少磁盘空间。 Segment 的命名是日期加时间,因此很直观的可以看出他们的存活周期。 3. index。 索引系统中所有被抓取的页面,它并不直接从页面产生,而是合并很多小的 segment 的索引。 Nuteh 使用 Lueene 来建立索引,但 Lucene 的 segment的概 念和 Nutch 的 segment 概念是完全不同的。 简单来说 Lucene 的 segment是 Lucene 索引库的一部分,而 Nutch 的 Segment 是 WebDB 中被抓取和索引的一部分。 抓取过程详解 抓取是一个循环的过程:抓取工具从 WebDB 中生成了一个 fetchlist 集合;抽取工具根据 fetchlist 从 Web 上下载网页内容;根据抽取工具发现的新链接更新WebDB;然后再生成新的 fetchlist,周而复始。 这个抓取循环在 Nutch 中经常指:generate/fetch/update 循环 [12]。 一般来说同一域名下的 URL 链接会被合成到同一个 fetchlist。 当同时使用方法多个工具抓取的时候,这样做就不会产生重复抓取的现象。 Nutch 遵循 Robots Exclusion 协议,可以用 定义保护私有网页数据不被抓去。 此抓取工具的组合是 Nutch 最外层的,也可以直接使用更底层的工具。 上述 过程分别详述如下,括号内是底层工具的名字: 创建一个新的 WebDB (admin db create) 把开始抓取的根 URL 放入 WebDB (inject) 从 WebDB 的新 segment 中生成 fetchlist (generate) 根据 fetchlist 列表抓取网页的内容 (fetch) 根据抓取回来的网页链接 URL 更新 WebDB (updatedb) 重复上面 35 步直到达到指定抓取层数 用计算出来的网页 URL 权重 scores 更新 segments (updatesegs) 对抓取回来的网页建立索引 (index) 在索引中消除重复的内容和重复的 URL (dedup) 合并多个索引到一个大索引,为搜索提供索引库 (merge) 在创 建了一个新的 WebDB 后,抓取循环 generate/fetch/update 就根据第二步山东大学本科毕业论文 12 指定的根 URL 在一定周期下自动循环了。 抓取循环结束后,生成一个最终的索引 (第 7 步到第 10 步 )。 第 8 步中每个 segment 的索引都是单独建立的,之后才消重 (第 9 步 )。 第 10 步就大功告成,合并单独的索引到一个大索引库。 Dedup 工具可以从 segment 的索引中去除重复的 URL。 因为 WebDB 中不允许重复的 URL,也就是说 fetchlist 中不会有重复的 URL,所以不需要对 fetchlist执行 dedup 操作。 默认的抓取周期 是 30 天,如果已经生成的旧 fetch 没有删除,而又生成了新的 fetch,还是会出现重复的 URL 的。 当只有一个抓取程序运行的时候是不会发生上述情况的。 在爬虫中,抓取是最主要的操作,其作用就是抓取网页,但抓取的单位不是单个网页,而是同属于一个 segment 的网页集合。 下面我们仔细分析下这个类。 Run()函数逐个实例化抓取线程 FetcherThread 对象,然后触发各个线程的 start()函数,在其初始化 threadCount 个线程并等待线程结束后或者出现大的异常后,此函数调用 close()结束输入输出流。 FetcherThread 是 Fetcher 类的一个内部类它继承于 , Thread 类,只有一个实体方法 run()和三个静态函数:handleFetch(), handleNoFetch(), logError()。 ()实例。基于nutch的新闻主题搜索引擎的设计与实现毕业论文(编辑修改稿)
相关推荐
lot ftNNN NN (33) 其中 sN 是一帧所包含的正交频分复用符号个数 , cN 是子载波数。 为满足优良的信道传输特性,时域抽样点数应和和频域抽样点数近似相等,即: m a x12d t c f df T N f N f T (34) 综上所述,根据已知的导频信息,便可获得信 道在导频位置的传输特性,进而获得整个信道的传输特性。
Simulator Version2) 是一款开放源代码的网络模拟软件,最初由加州大学伯克分校 ( UC Berkeley) 开发。 它最初的开发目的是为了研究大规模网络以及当前和未来网络协议的交互行为。 它为模拟研 究有线和无线网络上的 TCP/IP、路由和多播等协议提供了强有力的支持。 NS2 是一个开放源代码软件,任何人可以获得、使用和修改其源代码。 正 因为如此
图 导频信息的插入方式 在 频域抽样定理 中 ,信号的 频域抽样对应于时域的周期延拓,因此,必 14 须要求时域下信号的 周期延拓不产生 混叠失真,以 满足频域下信号的复原。 转化为公式即为: max1 fcNf 。 化简后得到: max1fcN f (31) 其中 fN 是频率方向上的最小间隔, max 是最大时延扩展 , cf 是 归一化的子载波间隔。
存存储器中的第五个字节 ,DS18B20 在工作时按此寄存器中的分辨率将温度转换成相应精度的数值。 微控制器 STC89C52 本系统采用单 片机 STC89C52 作为温度采集点和控制端的微处理器,基于单片机的控制系统开发容易、系统小巧、功耗低、成本低廉、性价比高。 STC89C52 是 STC 公司生产的一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器
8B20 会拉低总线,外部供电的 DS18B20 会继续保持总线高电平。 基于 nRF905 的无线温度采集系统的设计 14 6 nRF905 无线数传芯片简介 挪威 NORDIC 公司推出 了一种单片射频芯片是本次系统设计的核心 , 此芯片工作 于 ~ 电压范围内 , 使用 433MHz/868MHz/915MHz 的 ISM 频段,频道转换时间小于 650μs,数据传输速率 最大 为
到 PC 机上实现温湿度、酒精浓度、空气质量的实时监控如可显示实时温度,就是一套通过无线方式实现温湿度、酒精浓度、桂林电子科技大学毕业设计 (论文 )报告用纸 第 4 页 共 31 页 空气质量的接受显示系统。 基于无线收发芯片 nRF905 的温度测量系统主要由五个模块构成,分别为无线收发模块、单片机控制模块、蜂鸣器报警模块、显示模块以及 PC 机监测 模块。 总系统框图如下图 所示。 图