(计算机应用技术专业论文)面向中医药的分布式语义搜索系统.pdf_第1页
(计算机应用技术专业论文)面向中医药的分布式语义搜索系统.pdf_第2页
(计算机应用技术专业论文)面向中医药的分布式语义搜索系统.pdf_第3页
(计算机应用技术专业论文)面向中医药的分布式语义搜索系统.pdf_第4页
(计算机应用技术专业论文)面向中医药的分布式语义搜索系统.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(计算机应用技术专业论文)面向中医药的分布式语义搜索系统.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学硕士学位做摘要 摘要 随着i n t e r n e t 的快速发展以及信息技术在各个科学领域的普及,在同一科 学领域的不同机构,数据的表现方式呈现出不同的特点,数据之间的共享以及集 成成为对数据资源进行有效利用的难题。针对目前的这一需求,在实验室原有 d a r t s e a r c h v 3 的基础上,提出了新的分布式语义搜索系统的解决方案。本文主要 介绍了该系统的具体设计以及详细实现。 首先,本文首先简要回顾了目前搜索引擎技术的发展现状以及面临的难题, 并对实验室的原有相关工作d a r t g r i d 和d a r t s e a r c h v 3 进行了简单介绍;随之介 绍了在分布式语义搜索系统中将应用到的两个开源软件工具l u c e n e 和h a d o o p 。 最后,通过分析中医药领域数据集成及搜索的新需求以及原d a r t s e a r c h v 3 存在 的缺陷,提出了分布式语义搜索系统的解决方案,并介绍了该系统的具体设计以 及详细实现。 本文的核心内容在于对新的分布式语义搜索系统的总体设计,混合语义索引 的构造算法,多个数据中心数据的语义集成技术以及如何利用h a d o o p 进行分布 式索引以及搜索技术等进行了详细分析与设计,并着重对混合语义索引的构建过 程,以及在h a d o o p 集群中,分布式索引的管理以及搜索任务的调度分发进行详 细介绍。 最后,本文还简要分析了在未来的工作中,新的分布式语义搜索系统将要前 进的几个方向。 关键词: 分御式,语义索引,语义搜索,h a d o o p ,l u c e n e 学砒学位做 a b s t r a c t a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fi n t e m e ta n di n f o r m a t i o nt e c h n o l o g yw i d e l y a p p l i e di nv a r i o u ss c i e n c ef i e l d s ,d a t ai so r g a n i z e di nv a r i o u ss c h e m a sf o rd i f f e r e n t o r g a n i z a t i o n s i nt h es a m ef i e l d h o wt os h a r ea n de x p l o i tt h e s ed a t ar e s o u r c e s e f f i c i e n t l yi nv a r i o u so r g a n i z a t i o n si sab i gp r o b l e mt ob es o l v e d f o rt h i sg o a l ,w e p r e s e n t e da n e wd i s t r i b u t e ds e m a n t i cs e a r c hs y s t e mb a s e do nd a r t s e a r c h v 3i no u rl a b t h i sp a p e rd e s c r i b e st h ed e t a i l so ft h ed e s i g na n di m p l e m e n t a t i o no ft h i ss y s t e m a tf i r s t ,w eb r i e f l yi n t r o d u c e dt h el a t e s td e v e l o p m e n to fs e a r c he n g i n ea n dt r o u b l e o ft r a d i t i o n a ls e a r c he n g i n e s a n dt h e nt h er e l a t e dw o r ks u c ha sd a r t g r i da n d d a r t s e a r c h v 3i no u rl a bw a si n t r o d u c e d t h e n ,w ed e s c r i b e dt h eo p e ns o u r c et o o l s h a d o o pa n dl u c e n ef o l l o w e di n t h i s d i s t r i b u t e ds e m a n t i cs e a r c hs y s t e m a tl a s t , a c c o r d i n gt ot h en e wd e m a n d so fd a t ai n t e g r a t i o no ft r a d i t i o n a lc h i n e s em e d i c i n ea n d t h ed e f e c t so fo l dd a r t s e a r c h v 3 ,w ep r e s e n t e dt h ed i s t r i b u t e ds e m a n t i cs e a r c hs y s t e m a n di n t r o d u c e dt h ed e t a i l so ft h ed e s i g na n di m p l e m e n t a t i o n t h i sp a p e rf o c u s e do nt h es y s t e md e s i g no ft h ed i s t r i b u t e ds e m a n t i cs e a r c hs y s t e m , t h ea l g o r i t h mo fh y b r i ds e m a n t i ci n d e x ,h o wt oi n t e g r a t em u l t i p l ed i s t r i b u t e dd a t a c e n t e r ss e m a n t i c a l l ya n dh o wt om a k ed i s t r i b u t e di n d e xa n ds e a r c hi n h a d o o p f u r t h e r m o r e ,t h i sp a p e ri n t r o d u c e dt h ep r o c e s so fh y b r i ds e m a n t i ci n d e xa n dt h e m a n a g e m e n to fd i s t r i b u t e di n d e x e sa n dt h ed i s p a t c ho ft h es e a r c ht a s k si nh a d o o p i nt h el a s tp a r to ft h i st h e s i s ,s e v e r a ld i r e c t i o n sa r ep o i n t e do u ti nt h ef u t u r ew o r k f o rt h i sd i s t r i b u t e ds e m a n t i cs e a r c hs y s t e m k e y w o r d s :d i s t r i b u t e d ,s e m a n t i ci n d e x ,s e m a n t i cs e a r c h ,h a d o o p ,l u c e n e 浙江大学硕: :学位论文 图目录 图目录 图2 1l u c e n e 的体系结构图9 图2 2h a d o o p 分布式文件系统架构1 3 图2 3m a p r e d u c e 执行过程16 图3 1 系统体系架构图2 2 图3 2 系统总体设计2 3 图3 3 功能模块之间的通信2 4 图4 1 抽取本体实例算法3 1 图4 2 中医药领域本体3 2 图4 3 数据与本体之i 日j 的映射关系3 3 图4 4 语义映射示例图3 4 图4 5l u c e n e 索引结构3 4 图4 6 索引构建类关系图3 6 图4 7 索引构建部分代码示例3 9 图5 1 搜索流程图4 4 图5 2 集群搜索任务执行示例图4 5 图5 3 数据服务示意图4 7 图5 4 索引管理类关系图4 8 图5 5 搜索任务调度类关系图4 9 图5 6 搜索c l i e n t 部分代码5 0 图5 7 搜索s e r v e r 部分代码5 0 i v 浙江大学硕士学位论文 表目录 表目录 表2 1l u c e n e 同其他全文检索系统比较1 0 表2 2l u e e n e 源代码组织结构1 1 表2 3h a d o o p 文件写入示例1 4 表2 4h a d o o p 文件写读取示例1 4 表2 5h a d o o p 文件块复制示例15 表4 1 传统的索引结构2 6 表4 2 混合语义搜索结构3 8 v 浙江大学硕士学位论文第l 章绪论 1 1 课题背景 第1 章绪论 1 1 1 搜索技术概述 随着i n t e r n e t 的爆炸性增长,w w w 已经发展成为包含多种信息资源,站点遍 布全球的巨大动态信息服务网络,为用户提供了巨大的信息资源,人们已经进入 了网络信息时代。但是随着信息资源的高速增长,在广袤的信息资源中,人们查 找和获取需要的信息也变得越来越困难,如何快速,高效,准确地检索和访问各 领域的信息资源以促进信息的交流共享是一个亟需解决的难题。网络搜索引擎 的出现,为人们在互联网上查找信息提供了一种解决方案。 经过几十年的发展,网络搜索引擎从最初网页看成独立的数据信息乜1 ,到 g o o g l e 的“万维网可以看成是由相互应用的页面构成的有向图”的链接模型。”, 网络搜索引擎技术取得了巨大的发展,在人们的同常生活也发挥着越来越重要的 作用。如今,网络搜索引擎已经能够对数十亿个网页构建索引,为全球范围内的 用户提供迅捷和高速的信息检索服务。 然而,传统的网络搜索引擎的搜索方式一般都是基于关键词或者内容分类目 录进行信息资源搜索的方式,得到的结果信息量大,且包含有大量的冗余以及无 关的信息,用户很难在如此众多的搜索结果中找到真正符合自己需求的信息。同 时,由于互联网仅仅是通过网络硬件设备互相连接起来,其上的网站互相独立, 网页之间仅能通过超链接互相联系,这使得网页之间缺乏语义关联,万维网上的 信息彼此孤立,这使得搜索引擎很难对网页进行恰当地评级。同时,传统的搜索 引擎在搜索结果的相关性和可信性等方面也存在很大的缺陷,例如,链接工厂 欺诈行为通过自动生成虚假链接来提高某个网站的搜索排名;搜索引擎无法通过 关键字有效地理解用户的特征和意图,从而产生个性化的搜索结果;搜索引擎也 无法理解网页内容,只能通过关键字匹配的方式汁算搜索结果的相关性等等。 浙江大学硕十学位论文第l 章绪论 1 1 2 语义搜索引擎的出现 语义w e b 技术于1 9 9 8 年由t i mb e r n e r s - l e e 提出,并在2 0 0 0 年1 2 月召开 的x m l 2 0 0 0 会议上进一步明确阐述了语义万维网( s e m a n t i cw e b ) 的构想。t i m b e r n e r s - l e e 认为:语义w e b 是目前w e b 的扩展,其上的信息都具有良好的定义, 能够很好支持人与计算机之间的协同工作。换句话说,语义w e b 的目标是让计算 机能够理解w e b 上的信息,从而实现w e b 资源的自动处理,提高资源利用率,以 适应w e b 资源的快速增长。 语义w e b 的出现,弥补了i n t e r n e t 万维网上信息缺乏语义信息以及语义关 联的缺点,使得智能搜索引擎的出现成为可能,语义搜索引擎便在此背景下应运 而生。语义搜索引擎指的是一类利用语义技术,例如本体隋m 1 ,语义标注n m l ,语 义关联发现阳1 等应用于海量信息检索过程中的各个环节,从而提高检索服务的质 量以及用户满意度的搜索引擎。该类搜索引擎不仅能够根据搜索关键字的语义信 息找到相关的搜索结果,还能够根据信息之间的语义关联,利用语义推理等功能, 发现新的知识以及推荐相关联的信息。 语义搜索引擎按照功能特点可以分为两类:( 1 ) 用于搜索符合语义力维网规 范的数据集,该类搜索引擎( 如s w o o g l e 1 0 1 ,s i n d i c e 3 ,f a l c o n s 3 ,和 o n t o s e a r c h 3 1 等) 通过对语义万维网上海量数据的自动浏览,抓取,索引和评级, 来支持各种信息检索和知识发现利用;( 2 ) 利用本体标注等技术,对传统的网页 及各种类型的超媒体内容进行语义标注,从而提高传统搜索引擎的搜索质量。如 y a h o o 的m i c r o - s e a r c h ,以及目前的社会化t a g 搜索们n 朝等就具有该方面的特征。 语义搜索引擎相对于传统的基于关键字匹配的搜索引擎,具有以下一些优势 和特征: 1 ) 提高了搜索结果的准确率 传统的搜索引擎建立在基于关键字匹配的基础之上,对搜索结果完全是基于 字面意义上的匹配,对于一词多义或近义词,相似词等无法进行处理,无法理解 用户的搜索意图,返回的搜索结果包含大量无关的信息。而语义搜索引擎不是单 纯地关键字匹配,而是在对搜索关键字的语义具有充分地理解的基础上进行搜 浙江大学硕士学位论文 第1 章绪论 索,返回的搜索结果为语义上相匹配的信息。语义搜索引擎将信息检索提高到了 知识检索的层面,深刻地理解用户需求,提供用户期望的搜索结果。 2 ) 提高了搜索结果的查全率 传统的搜索引擎仅仅是对提交的关键字的匹配,无法搜索到不包含该关键 字,但是语义相近的搜索结果,这样将丢失大量的数据信息。而语义搜索引擎能 够根据该关键字的语义信息,找到其语义形似或相近的关键词,利用这些关键词 并搜索,从而保证返回的搜索结果更全面。 3 ) 能够发现语义关联的信息 传统的搜索引擎把万维网看成有一系列独立的网页通过超链接构成的有向 图,而网页的内容则为一系列关键字的集合。这样当用户需要进一步搜索时,传 统的搜索引擎无法为用户提供更进一步的信息。而语义搜索引擎充分地理解网页 的语义信息,并把万维网看成为一个相互语义关联的信息集合,这样当用户需要 进一步搜索时,搜索引擎月 - 匕i 一t t e t 方便准确地根据网页的语义信息为用户找到语义相 关的网页。 目前,国内外的语义搜索研究f 蓬勃发展,比较典型的有s w s e ,s w o o g l e 0 1 , f a l c o n s 2 1 等,其在对传统数据以及r d f s o w l 等本体语言描述的语义数据的搜 索方面取得了重大的进展。本文就是在这些研究以及实验室之前的研究的基础之 上提出了面向中医药的分布式语义搜索解决方案。 1 2 项目背景 1 2 1d a r t g r i d 系统简介 d a r t g r i d l l 6 1 1 1 系统是由浙江大学计算机学院c c n t 实验室丌发的一个基于语 义的异质异构关系型数据库的数据集成平台,其主要目标是为了利用领域本体知 识,动态地集成,统一地管理该领域的异质异构的关系数掘库数据。其采用了与 传统的分布式数据库查询系统类似的体系架构。系统的输入为个s p a r q l 语言i l 引 的查询串,由系统对该s p a r q l 语言查询串执行语义重写,生成关系数据库的s q l 查询计划,并将陔s q l 查询任务调度分发到i t 册的各数据库中,由各个数据节点 浙江人学硕士学位论文第1 章绪论 分别执行本地的s q l 查询任务并返回查询结果,最后系统对多个数据库返回的查 询结果进行语义包装后,返回给终端用户。 其主要有以下几个特点: 1 ) 利用本体论显式地精确地定义了领域内的概念及其概念之间的关系,这种 精确的领域模型将产生出更好的面向领域的软件产品。 2 ) 为用户提供了简单易用的用户接口。由于系统定义了统一的领域本体,用 户将无需对数据库的关系模式有深刻地了解,更无需熟悉了解复杂的s q l 操作, 仅需要对自己领域内的知识熟悉,便能够快速方便地使用系统。 3 ) 系统具有更好的扩展性和兼容性。当数据资源发生改变时,或需要添加新 的数据资源时,系统本身无需做任何改变,只需要修改或添加相应的数据资源注 册文件,便可以动态的更新或添加新的数据资源。 4 ) 为应用开发者提供了开放的方便易用的w e bs e r v i c e 编程接口,并提供了相 应地丌发文档,可以非常方便地在该平台上开发第三方的应用软件。目前,在中 医药领域已经有十多个基于该平台的软件正在使用。 1 2 2d a r t s e a r c h v 3 系统简介 d a a s e a r c h v 3 是一个基于d a r t g r i d 基础框架开发的面向语义网络的集成异质 异构关系型数据库的全文搜索引擎系统。该系统采用轻量级的j 2 e e 解决方案 一s p r i n g 框架丌发,支持全文搜索、专题搜索、标准次关联搜索等多种搜索方法, 且通过x m l 文件对系统进行配制,为用户在最短时间内部署平台提供了捷径。 该全文搜索系统整体上可以分为四个层次。最底层的是关系型数据库系统, 其包含了需要进行搜索的数据源信息;在数据库之上的是d a r t g r i d 内核层, d a r t g f i d 内核主要实现基于语义本体的数据库集成,实现搜索前的语义解析和搜 索的语义包装:在内核层之上的是基于l u c e n e 的全文检索层,该层为整个系统的 核心,主要包含中文分词程序、索引程序与搜索程序等功能模块。最上面一层为 用户接口层,其主要基于a j a x 异步调用技术的实现,为用户提供更好的用户体验。 4 浙江大学硕上学位论文 第l 章绪论 1 3 本文的内容和组织结构 1 3 1 本文的研究内容 本论文主要从中医药的实际应用出发,在实验室原有的基础之上,做了一下 几项工作: 1 ) 利用中医药领域的本体知识,为其构建统一的领域本体,从而在d a r t g r i d 系统内核的基础上对分布于国内各个数据中心的中医药数据进行语义集成。 2 ) 根据中医药领域数据的特点,为分布于国内各个数据中心的中医药数据 构建混合语义索引,并在其基础上提供了语义搜索以及关联搜索等功能。 3 ) 根据中医药数据松散分布在国内多个数据中心的特点,利用s o a 服务的 体系架构,将多个数据中心的数据动态,统一地进行语义集成,并提供语义搜索 服务。 4 ) 针对海量数据的并行处理,本系统在对h a d o o p 进行深刻研究的基础上, 利用h a d o o p 集群对搜索任务进行处理,极大地提高了系统的性能,增大了系统 的吞吐量,为用户提供更好的用户体验。 1 3 2 本文的组织结构 全文分为六章,各章重点内容安排如下: 第一章为绪论部分,首先对搜索引擎技术做了一个简单的介绍,并分析了当 前传统搜索引擎面对的几个难题及其局限性,从这些问题出发,引出了语义搜索 的解决方案,对目前出现的语义搜索引擎做了个简答的介绍以及总结。然后介 绍了我们实验室在语义集成及搜索方面已经做了的工作,以及取得的成就。 第二章为技术背景部分,该部分主要介绍了本文中的面向中医药分布式语义 搜索引擎将要使用到的技术及工具。主要介绍了l u c e n e 丌源搜索软件包,以及 h a d o o p 丌放云计算平台等,为下一步的介绍奠定基础。 第三章首先分析了目日,j d a r t s e a r c h v 3 存在的一些问题,然后从总体高度介绍 了面向中医药分和式语义搜索引擎的设计目标,体系架构,系统功能模块及各功 浙江大学硕士学位论文第l 章绪论 能模块之间的通信。 第四章详细介绍了构建中医药关系数据库数据的语义索引的详细设计以及 具体实现。 第五章详细介绍了对多个数据中心的数据进行语义集成以及分布式搜索的 详细设计及具体实现。 第六章对本文的工作进行了总结,并提出了未来可能展开的工作。 6 浙江火学硕j 二学位论文第2 章系统相关技术 第2 章系统相关技术 2 1l u c e n e 开源搜索包介绍 2 1 1 基本情况 l u c e n e 1 9 1 是a p a c h e 软件基金会j a k a r t a 项目组的一个子项目,是一个开放源 代码的全文信息检索引擎工具包。该开发工具包使用j a v a 语言编写,实现了基本 的索引器和搜索器,能够执行简单的建索引和搜索的功能。为了方便开发者的使 用以及二次开发,l u c e n e 提供了丰富的j a v a a p i 调用接口以及完整的在线开发文 档以及邮件列表,方便用户讨论和交流。 作为一个开源项目,l u c e n e 以其开发源代码的特性,优异的索引结构,良好 的系统架构,自发布之同起,就受到广大用户的赞赏,在搜索引擎领域引起了巨 大的反响。它不仅作为一个软件工具被构建成具体的软件应用,还被广泛地集成 到其他系统中去,为其提供全文检索的功能。目前已经有很多项目都是用了 l u c e n e 作为其后台的全文检索工具。 l u c e n e 作为一个优秀的开源的全文检索引擎,其具有以下几个特点: 1 ) 索引文件格式独立于应用平台。l u c e n e 定义了一套以8 字节为基础的索 引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。 2 ) 在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对性 的文件建立小文件索引,这样更够增量地更新索引和并行建立索引,然后通过索 引的合并技术,达到优化的目的。 3 ) 索引文件采用了良好的组织结构以及优秀的压缩算法,使索引文件在满足 功能需求的同时,占用的空i 、日j 尽可能地小,同时提高了系统的性能。 4 ) l u c e n e 具有一套良好的体系架构,各个功能模块功厶匕e , 注t n 晰,结构分明,真 f 体系了软件工程的高内聚低耦合的特点。用户能够非常方便的重写自己的分词 器,定制自己的索引结构,自定义排序公式等,而不会对l u c e n e 的其他模块产生 很大的影响,真币地方便用户将其集成剑自己的系统中束。 浙江大学硕上学位论文 第2 章系统相关技术 5 ) 实现了一套强大的查询引擎,不仅仅支持简单的关键字的准确搜索,还实 现了布尔搜索,模糊搜索,正则表达式匹配等,同时支持o r ,a n d 等逻辑运算 的多关键字组合搜索等功能。 6 ) 系统具有良好的扩展性并提供了丰富的对外接口a p i ,用户可以根据自己 的需要对w o r d 文档,网页数据,p d f 文档,数据库数据等多种文件格式定义各 自的数据解析器,从而建立统一的索引。 7 ) 系统对多国语言具有良好的支持,系统默认自带有英文,中文,法文等语 言的分词器。 2 1 2 实现机制 l u c e n e 作为一个优秀的丌源的搜索引擎工具包,其具有良好的体系架构,如 图2 1 所示。从图2 1 中可以看出,l u c e n e 主要包括用户接口,索引模块,搜索 模块,索引存储以及工具类等五个功能模块,下面分别对每个功能模块进行一个 简单介绍: 1 ) 用户接口:包括索引数掘源建索引的a p i 接口,关键字搜索的搜索a p i 接口以及分词程序的接口等。 2 ) 索引模块。该模块主要由l u c e n e 的o r g a p a c h e 1 u c e n e i n d e x 包中的类实现, 主要功能包括设置索引中每个d o c u m e n t 的组成结构,如由多少个域( f i e l d ) 组 成,每个域的数据来源,是否存储,分词等,设置索引的构建方式,如索引块的 大小,索引的合并方式等等。 浙江太学硕t 学位论女 第2 章系统相关技术 幽2il u c e n e 的体糸结构酗 3 1 搜索模块。该模块主要有l u c e n e 的o r g a p a c h e l u c e n es e a r c h 包中的类实现, 主要功能为在索引数据中查找搜索关键字,并根据定义好的排序公式,对搜索结 果进行排序。 4 ) 索引存储模块。该模块主要由l u c e n e 的o r g a p a c h e u c e n e s t o r e 包中的类 实现,l u c e n e 的索引数据存储主要有两种方式,分别为f s d i r e c t o r y 和 r a m d i r e c t o r y 。f s d i r e c t o r y 指的是将索引存储在系统的硬盘上,以文件的方式进 行组织,这种方式适合于对太数据量的索引操作:r a m d i r e c l o r y 指的是将索引直 接存储在内存中,这种方式可以为用户提供良好的性能,但是由于内存容量和无 法保存的限制,其一般适合少量数据的索引操作。 5 ) 工具类。该模块功能比较复杂,主要提供了l u c e n e 的一些工具类,如 l u e e n e 的数据结构和算法等。 l u c ( ! l l e 最核心的特征是通过特殊的索引结构实现了传统数据库不擅长的全 文索引机制,并提供了扩展接口,以方便针对不同应用的定制。 浙江大学硕上学位论文 第2 章系统相关技术 表2 1l u c e n e 同其他全文检索系统比较 l u c e n e其他开源全文检索系统 增量索引和批量 可以进行增量的索弓 ( a p p e n d ) ,可很多系统只支持批量的 索引以对于大量数据进行批量索引,并引,有时数据源有一点增 且接口设计用于优化批量索引和小加也需要重建索引 批量的增量索引 l u c e n e 没有定义具体的数据源,而 很多系统只针对网页,缺 是一个文档的结构,因此可以非常乏其他格式文档的灵活 数据源 灵活的适应各种应用( 只要前端有性。 合适的转换器把数据源转换成相应 结构) l u c e n e 的文档是由多个字段组成缺乏通用性,往往将文档 的,甚至可以控制那些字段需要进整个索引了 索引内容抓取 行索引,那些字段不需要索引,更 重要的是,索引的字段也分为需要 分词和不需要分词的类型 查询分析通过查询分析接口的实现,可以定 制自己的查询语法规则:比如:多 个关键词之间的+ 一a n do r 关系等 2 1 3 应用示例 l u c e n e 系统为应用开发者提供了简单易用的a p i 接口,这节我们将对 l u c e n e 常用的调用代码做一个简单介绍。 在介绍l u c e n e 的a p i 接口之前,让我们l u c e n e 的源代码组织结构有一个大 致的认识,如下表2 2 所示。对于应用丌发人员来说,索引模块和搜索模块是主 要的应用程序调用接口。 l o 浙江火学硕士学位论文第2 章系统相关技术 表2 2l u c e n e 源代码组织结构 o r g a p a c h e 1 u c e n e s e a r c h 搜索开发包 o r g a p a c h e 1 u c e n e i n d e x索引开发包 o r g a p a c h e 1 u c e n e a n a l y s i s语言分析程序开发包 o r g a p a c h e 1 u c e n e q u e r y p a r s e r查询解析开发包 o r g a p a c h e 1 u c e n e d o c u m e n t索引结构丌发包 o r g a p a c h e 1 u c e n e s t o r e底层i o 存储开发包 o r g a p a c h e 1 u c e n e u t i l公用基础类及工具类 构建索引的l u c e n e 常用代码示例: i n d e x w r i t e rw r i t e r = n e wi n d e x w r i t e r ( i n d e x p a t h , n e wc u s t o m a n a l y z e r ( ) , f a l s e ) ; d o c u m e n td o c 2 n e w d o c u m e n t ( ) ; d o c a d d ( n e wf i e l d ( “t i t l e ”,p a g e g e t t i t l e 0 , f i e l d 。s t o r e y e s , f i e l d i n d e x t o k e n i z e d ) ) ; d o c a d d ( n e wf i e l d ( “ c o n t e n t ”,p a g e g e t c o n t e n t o , w r i t e r a d d d o c u m e n t ( d o c ) ; w r i t e r o p t i m i z e ( ) ; f i e l d s t o r e n o , f i e l d i n d e x t o k e n i z e d ) ) ; 从上面的代码我们可以看出,利用l u c e n e 构建索引一般需要三步,首先实例 化一个i n d e x w r i t e r 对象,在实例化该对象时,需要指定索引数据放置的位置以及 采用的语言分词器;然后构造一个d o c u m e n t 对象,指定索引的结构,如有多少 个f i e l d ,每个f i e l d 的内容,是否存储,是否分词等;最后将d o c u m e n t 对象添 3 0 1 - 至0i n d e x w r i t e r 中,完成索引的构建。 常用搜索代码示例: i n d e x s e a r c h e ri n d e x s e a r c h e r = n e wi n d e x s e a r c h e r ( i n d e x d i r ) ; q u e r y p a r s e rq u e r y p a r s e r = n e wq u e r y p a r s e r ( ”c o n t e n t ”, 浙江大学硕十学位论文第2 章系统相关技术 n e ws t a n d a r d a n a l y z e r o ) ; q u e r yq u e r y2q u e r y p a r s e r p a r s e ( k e y w o r d ) ; b l o g c o l l e c t o rb l o g c o l l e c t o r = n e wb l o g c o l l e c t o r ( i n d e x s e a r c h e r ) ; i n d e x s e a r c h e r s e a r c h ( q u e r y ,b l o g c o l l e c t o r ) ; l i s t r a w r e s u l t s 2 b l o g c o l l e c t o r g e t r e s u l t s 0 ; 从上面的搜索代码可以看出,利用l u c e n e 的搜索过程主要分为三步,首先利 用指定的索引路径构造i n d e x s e a r c h e r 对象;然后生成q u e r y p a r s e r 查询解析器对 象,并制定搜索关键字及搜索的f i e l d ;最后利用h i t c o l l e c t o r 对象存储搜索结果。 2 2h a d o o p 开源云计算平台介绍 2 2 1 基本情况 h a d o o p l 2 0 1 是a p a c h e 开源组织的一个分布式计算开源框,它使得一般的应用 程序利用成千上万的节点并行处理p b 级的数据成为可能,在分布式计算领域引 起了巨大的轰动,对计算机进入云计算时代发挥了巨大的推动作用。 h a d o o p 的作者也是d o u gc u t t i n g , 其最仞设计的目的是为了支持n u t c h 网 络搜索引擎的分御式处理。在h a d o o p 的发展历程中,受到了许多国际i t 大公司 的支持,其中y a h o o 作为最主要的支持者和贡献者,在h a d o o p 的发展过程中做 出了巨大贡献,同时i b m ,g o o g l e 等公司在h a d o o p 的推广,应用等领域也是发 挥着积极的作用。 h a d o o p 作为一个用j a v a 编写的分布式开源框架,其主要由两部分构成,分 别为类b i g t a b l e i 2 l 】的h a d o o p 分布式文件系统( h d f s ) 以及对m a p r e d u c e 2 2 】并 行编程框架的支持。其中,h a d o o p 分布式文件系统为分布式并行计算提供了存储 基础,它能够统一高效地管理分布在成千上万个集群节点上的文件和存储空白j , 同时提供了良好的数据同步,备份和恢复机制。 m a p r e d u c e 并行编程框架最早 由g o o g l e 提出,概念“m a p ”和“r e d u c e ”及其主要思想,主要来源于函数式编 程语言的m a p f o l d e r 编程方式,同时借鉴了矢量编程语言的部分特性。顾名思义, m a p r e d u c e ,其中的“m a p ”指的是将任务进行分割映射到集群节点,而“r e d u c e ” 浙江大学硕士学位论文第2 章系统相关技术 指的是对“m 印”分割后的任的结果进行“合并”,最后得到作业的计算结果。 2 2 2 实现机制 从上面的介绍,我们知道h a d o o p 主要由两部分构成,分别为h a d o o p 分布式 文件系统( h d f s ) 和m a p r e d u c e 并行编程框架,下面本小节对其进行详细介绍。 h a d o o p 分布式文件系统( h d f s ) 为h a d o o p 的分布式计算提供了存储基础, h a d o o p 的分布式文件系统同其他的分布式文件系统有很多相似之处,如: 1 ) 对于整个集群都有唯一的名字空间,该集群由该命名空间唯一标志。 2 ) 保证数据的一致性。集群的节点之间有很好的同步机制,并且一般适合于 一次写多次读的数据模型。 3 ) 良好的数据备份和恢复机制。当集群中的一个节点d o w n 机时,主节点存 储有该节点的元数据,可以快速地找到该节点丢失的数据,对数据进行恢复,不 影响整个集群的工作。同时,文件存储时,将被分成多个同样大小的文件块,每 个文件块将被分配存储到不同的数据节点上,同时保留有每个文件快的备份上。 h d f sa r c h i t e c 缸i r e m e t a d a t ao p s 多 r e 刍dd a t a n o d e s r a c k1 一、 b l o c ko p s 、 d a t a n o d e s r e p l i c a t i o n v 忻i t e 一、 rc l i e n t 、 “ ,7 、一一,。、。一 、f r a c k2 图2 2h a d o o p 分布式文1 _ ,f = 系统架构 从图2 2 可以看出,h a d o o p 分布式文件系统丰要由n a m e n o d e ,d a t a n o d e s h t t p :h a d o o p a p a c h e o r e c o m m o n d o e s t o 18 3 h d l s _ _ d e s i g n h l m l 1 3 浙江大学硕士学位论文 第2 章系统相关技术 以及c l i e n t 三部分构成。其中n a m e n o d e 为集群的管理节点,可以看作是分布式 文件系统的管理者,其主要负责文件系统的命名空间,集群的配置信息,文件块 的分发,存储,备份等,同时对集群中的d a t a n o d e s 进行管理。n a m e n o d e 将文 件系统的元数据信息存储在内存中,这些信息主要包括了文件信息,每一个文件 对应的文件块的信息和每一个文件所分布的d a t a n o d e 信息,以及文件的备份信 息等。d a t a n o d e 是文件存储的基本单元,它将文件块存储在本地文件系统中,同 时保存该数据快的元数据信息,并周期性地将本d a t a n o d e 节点上的文件块信息 发送给n a m e n o d e 。c l i e n t 为需要获取h a d o o p 分布式文件系统中文件的应用程序。 下面通过三个操作来说明他们之问的交互关系。 表2 3h a d o o p 文件写入示例 文件写入示例: 步骤1 ) c l l e n t 向n a m e n o d e 发起文件写入的请求。 步骤2 ) n a m e n o d e 根据文件大小和文件块配置情况,返回给c 1i e n t 它所 管理部分d a t a n o d e 的信息。 步骤3 ) c l i e n t 将文件划分为多个b l o c k ,根据d a t a n o d e 的地址信息, 按顺序写入到每一个d a t a n o d e 块中。 表2 4h a d o o p 文什写读取示例 文件读取示例: 步骤1 ) c 1i e n t 向n a m e n o d e 发起文件读取的请求。 步骤2 ) n a m e n o d e 返回文件存储的d a t a n o d e 的信息。 步骤3 ) c l l e n t 读取文件信息 浙江大学硕士学位论文 第2 章系统相关技术 表2 5h a d o o p 文件块复制示例 文件块复制示例: 步骤1 ) n a m e n o d e 发现部分文件的文件块不符合最小复制数或者部分 d a t a n o d e 节点失效 步骤2 ) 通知d a t a n o d e 节点相互复制文件块 步骤3 ) d a t a n o d e 节点开始直接相互复制 h a d o o p 的m a p r e d u c e 并行编程框架,起源于函数式编程语言的m a p f o l d e r 操作,相对于其他诸如m p i 等并行计算框架来说,其隐藏了具体的实现细节,诸 如硬件错误,数据分组,排序以及并行任务的调度,同步等复杂问题,用户只需 要关心如何将任务划分成多个子任务,m 印到相应的t a s k n o d e 节点上执行,对 执行后的结果如何执行r e d u c e 操作,得到最后的任务结果。 在h a d o o p 的m a p r e d u c e 编程框架中,任务的执行主要分为三步,第一步为 m 印操作,主要是对输入数据进行预处理,将其划分成临时的 对, 以按照需要进行并行处理;第二步为g r o u p 操作,主要是将m a p 过程产生的 对,按照k e y 值进行划分,为每一个k e y 生成一个v a l u e 链表;第三步为 r e d u c e 操作,对于g r o u p 操作中生成的结果,对每一个k e y 值,迭代遍历其对 应的v a l u e 值,进行相关计算,得到最后的结果,其中对不同的k e y 值,可以并 行处理。具体操作过程如图2 3 所示: 浙江大学硕士学位论文第2 章系统相关技术 i n t e n u e d i a t e 审审审审审审审 l k l :vk i :v k 2 :vk l :vk 3 :vk 4 :vk 4 :vk 5 :vk 4 :vk i :vk 3 :v l g r o u p b y 鼬y 虱 l g r o u p e dk i :v v v 、 k 2 :vk 3 :v ,vk 4 :v v ,vk 5 :v 6 $ $ 6 liiii o t l t p t l t 图2 3m a p r e d u c e 执行过程2 下面综合m a p r e d u c e 并行编程框架和h a d o o p 分布式文件系统来看h a d o o p 的体系结构,在h a d o o p 集群系统中,有一台m a s t e r 节点,从h a d o o p 分布式文 件系统角度看,它是n a m e n o d e 节点,负责整个分布式文件系统的管理工作;另 一方面从m a p r e d u c e 并行编程框架角度看,它充当m a p r e d u c e 任务的j

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论