




已阅读5页,还剩52页未读, 继续免费阅读
(计算机应用技术专业论文)基于lucene的图像搜索.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 摘摘 要要 随着计算机的发展,信息量日益膨胀,在庞杂的信息中获取自己想要的 信息变得日益复杂,特别是在搜索本机和网络图像的过程中。 针对以上的难题,基于 lucene 图像搜索系统使用优秀的搜索引擎 lucene 作为二次开发平台,在此平台上进行二次开发。本系统搜索图像前 需要对图像建立索引,索引的对象为从图像中抽取的信息,根据图像的来源 不同,系统把图像分为本机图像和网络图像,本机图像信息提取使用 java 平台二次开发提取,网络图像信息提取需要使用 html parser 二次开发提 取,在获取信息后使用 je 分词对提取的信息进行中文分词后索引。系统使 用 swt/jface 二次开发实现 ui 显示界面。 本文的主要工作包括:使用 swt/jface 平台二次开发 ui 界面;提取图像 信息:本机图像名称、大小、宽度、高度和网络图像 url 地址、名称、格 式、上下文信息;使用 je 分词对获取的图像信息进行分词;使用 lucene 进 行二次开发,对分词后的图像信息进行索引并对索引进行优化;确定图像搜 索的范围,对 lucene 进行二次开发搜索图像。 本系统的特点:使用优秀的开源搜索引擎 lucene 进行二次开发;使用 html parser 二次开发提取网络图像信息;实现对本机和网络图像搜索;搜 索效率高;具有良好的定制性和扩展性,根据实际搜索情况定制图像搜索范 围。 本系统的实现是基于 java 平台来实现,在实验的基础上对其性能进行 测试和分析,在理论上和技术上是可行的,对于定制图像搜索应用研究具有 一定的价值。 关键词 关键词 swt;lunene;中文分词;中文分词;html parser abstract with the development of computer, the information increase explosively. its complex thing to find some information that we want in the so much information, especially in image search. in view of the above difficult problem, the article realize the image searches based on locality and the network image searching. the image search uses some technologies such as lucene, html parser, xml, swt/jface and so on to realize the system. the image searcher can search the local image and net image. in this article, something needed to do: the first task is using swt/jface to realize the ui part which is the loader of the image seach.the second task is extracting local image information, such as image width、height、image name、path, and extract net image information, such as url ,web site, the context of image. the third thing is using chinese participles tools to participle image information, then create information index using lucene. the last task is searching image in some scope using lucene. the experiment is gonging on java platform. on the base of test, theres some data to test and analysis. in the point of theory and technology, image search based on lucene is feasible and valuable of the custom image search. keywords: swt;luene;chinese participle;html parser 中南民族大学中南民族大学 学位论文原创性声明学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所 取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任 何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡 献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的 法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意 学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文 被查阅和借阅。本人授权中南民族大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存 和汇编本学位论文。 本学位论文属于 1、保密,在_年解密后适用本授权书。 2、不保密。 (请在以上相应方框内打“” ) 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 中南民族大学硕士学位论文 1 第1章 绪论 1.1 、论文研究背景 目前图片搜索主力为 2 大主力,百度和 google。百度和 google 图片搜 索可以依据图片文件名称、图片大小(大、中、小) 、图片文件格式(jpg、 png、gif) 、图片颜色、网站地址来搜索。百度和 google 两大搜索引擎搜索 的图片主要是针对于网站图片搜索,搜索的图片都是搜索引擎网络爬虫获取 网络图片并对其信息进行索引,然后使用搜索引擎进行搜索。两大搜索引擎 不能对客户端的计算机中的图片进行搜索。在此背景下,我提出了基于开源 搜索引擎 lucene 的图像搜索。 lucene 是一个信息检索的函数库(library),用户可以基于它开发出各种 全文搜索的应用。它是一个全文检索引擎的架构,提供了完整的查询引擎、 索引引擎及部分文本分析引擎(英文与德文两种西方语言)。作为一个开放源 代码项目,lucene 从问世之后,引发了开放源代码社群的巨大反响,它不 仅能用来构建具体的全文检索应用,而且可被集成到各种系统软件中,其中 包括 ibm 的一些大型项目。lucene 作为一个优秀的全文检索引擎,其系统 结构具有很强的面向对象特征。首先是定义了一个与平台无关的索引文件格 式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台实现部 分设计为抽象类的实现。此外与具体平台相关的部分比如文件存储也封装成 类,经过层层的面向对象式的处理,最终达成了一个低耦合高效率,容易二 次开发的检索引擎系统。lucene 搜索的过程如下: (1) 从源文件中提取字符串。对源中字符串的提取需要通过程序来实 现; (2) 对从源提取的字符串进行索引。在对从源提取的字符串进行索引的 时候需要决定那些是需要进行索引、分词、存储。其中分词在 lucene 搜索 2 中起着非常重要的作用,搜索结果的好坏往往取决于分词的好坏。英文分词 是相对简单的分词,而对于中文来说是比较复杂的,现在已经有成熟的中文 分词系统,比如中科院的分词和 je 分词系统; (3) 通过关键字进行搜索,并显示结果。搜索结果的好坏取决于搜索引 擎对内容的索引,lucene 索引是针对于字符串,图像文件也可以被搜索。 1.2 、论文选题的理由以及意义 基于lucene的图像搜索是建立在lucene搜索引擎之上,lucene是基于 java、perl、c+的一个开源搜索引擎,在linux平台和windows平台下都可以 应用,具有跨平台的特性。同时lucene的开源性让我们可以扩展搜索功能, 目前有许多公司都有成功利用lucene做企业搜索引擎的案例。lucene用于做 索引的是字符串,它提供了底层的api函数,使用字符串作为索引对象,对 字符串索引后便可搜索。 1.3 、国内外研究现状及趋势 在图像搜索方面,google 是排在第一位,其搜索是基于图像文件名称 和图像大小、类型、颜色搜索。impression 图像搜索是现在比较新的一种图 像搜索,它采用了全新的用于多媒体信息的检索方式。通过对现有媒体形式 的特征研究,它可以很轻易的实现图片、音乐乃至电影内容的图像检索甚至 语义识别。它采用当前学术界最先进的基于视觉内容的多媒体信息检索技 术,使其可以精确地从用户提供的图片样本中提取出用户真正感兴趣的视觉 特征乃至语义特征,并以此特征作为检索的标准,从而挖掘出用户真正希望 得到的图片。 国内图像搜索中百度处在领头羊的位置,同时还有新浪图像搜索、pc home 图像搜索引擎、want2 网图搜索引擎,除此之外还有 cgcl 实验室的图像 搜索,此搜索引擎除了具有现有图像搜索引擎所具有的基于文本的图像搜索 功能以外,还具有其它搜索引擎所没有的基于示例图像的图像搜索功能,是 中南民族大学硕士学位论文 3 一种比较新的搜索引擎。 1.4 、本文的主要工作 本文的主要工作为提取本机和网络图像信息;使用 je 分词对提取的图 像信息进行分词;使用开源 lucene 进行二次开发,其中包括索引的建立、 图像搜索范围界定、图像搜索、索引优化;使用 swt/jface 进行界面设计 与实现;整合各种技术对系统进行设计和实现。 1.5 、论文的创新点 使用优秀的开源搜索引擎 lucene,在此平台上进行二次开发;对 html parser 进行二次开发提取网络图像中上下文信息从而实现对网络图像 上下文信息搜索;图像搜索范围为本机和网络图像;本搜索引擎是桌面搜索 软件的应用,提高本地图像搜索效率;本搜索引擎具有良好的定制性和扩展 性,可以根据实际搜索情况来定制图像搜索范围。 1.6 、章节结构 本课题主要重点是研究基于 lucene 图像搜索应用技术实现。论文分为 五章介绍课题工作,具体安排如下: 第一章 引言部分,主要对介绍了目前图像搜索引擎并对其进行评价, 针对其缺点提出了课题研究的重要意义。 第二章 基于 lucene 图像搜索的相关技术分析,介绍了基于 lucene 实 现需要的相关技术并对各技术进行分析。 第三章 基于 lucene 图像搜索的系统实现,提出了图像搜索的设计思想 并对系统进行实现。 第四章 基于 lucene 图像搜索测试和性能分析,对本地、网络图像资源 进行搜索比对其性能进行分析。 4 第五章 结论与展望。 中南民族大学硕士学位论文 5 第2章 基于 lucene 图像搜索的相关技术分析 2.1 、lucene 图像搜索 ui 界面技术分析 软件界面是人与计算机之间的媒介。用户通过软件界面来与计算机进行 信息交换。因此,软件界面的质量,直接关系到应用系统的性能能否充分发 挥,能否使用户准确、高效、轻松、愉快地工作,所以软件的友好性、易用 性对于软件系统至关重要。目前国内软件开发者在设计过程中很注重软件的 开发技术及其具有的业务功能,而忽略了用户对软件界面的需求,影响软件 的易用性、友好性;对界面设计的研究也集中在界面设计技术、设计手段方 面。软件开发人员在设计时以经验为参考依据,缺乏对实际用户需求的了 解。而软件的友好性、易用性同用户特征紧密相联,同样的软件界面,不同 用户可能有绝然相反的评价。因此分析用户特征、了解用户需求和操作习 惯,是开发软件界面的必有步骤,必须引起足够重视1。 通常一个软件界面的元素包括界面主颜色、字体颜色、字体大小、界面 布局、界面交互方式、界面功能分布、界面输入输出模式。其中,对用户工 作效率有显著影响的元素包括:输入输出方式、交互方式、功能分布,在使 用命令式交互方式的系统中,命令名称、参数也是界面元素的内容,如何设 计命令及参数也很重要。影响用户对系统友好性评价的元素则有:颜色、字 体大小、界面布局等,这种划分不是绝对的,软件界面作为一个整体,其中 任何一个元素不符合用户习惯、不满足用户要求都将降低用户对软件系统的 认可度,甚至影响用户的工作效率,而使用户最终放弃使用系统。围绕界面 元素所要达到的设计目的是让最终用户能够获得美感、提高工作效率、易于 操作使用系统。界面需求分析必须围绕用户为中心,不同于客观功能需求分 析,具有很大的主观性。虽然,界面设计人员可以按照通行的原则来设计, 但是用户个体的文化背景、知识水平、个人喜好等是千差百异的,其界面需 6 求也是相差很大。不同的用户,对软件界面有不同的要求,表达自己要求的 方式也不尽相同。而且用户的界面要求通常不像业务功能需求那样容易明 确、有据可查、可以利用专门工具进行分析。多数用户往往并不能提出明确 的、全局的界面需求,其需求同自身主观因素联系紧密,是模糊、变化的。 调查用户的界面需求,必须先从调查用户自身特征开始,将不同特征用户群 体的要求进行综合处理,再有针对性地分析其界面需求。因此这里引出用户 角色这个概念模型。 用户角色是指按照一定参考体系划分的用户类型,是能够代表某种用户 特征、便于统一描述的众多用户个体的集合。用户调查的目标是通过调查分 析用户特征,将每个不能建立模型的单一用户归纳为集合,将用户集合定义 为角色模型,同时赋予不同的优先级别,了解记录其界面需求。用户的需求 调查和其特征调查即用户角色定义,往往同时进行。调查的方法有很多种, 如直接交流、资料统计、表格调查等。用户角色定义的原则是有代表性、同 系统功能有关并有利界面的需求分析。一个用户角色可能包括大量的用户个 体,他们对于界面的要求可以按照一定的界面模型进行定义。在一个软件系 统中,用户角色定义时所依据体系可以多种多样,一个单一用户可以属于不 同参考体系下的不同用户角色,但是一个用户角色要求能够代表一种界面需 求类型。如收银员就是按照用户工作职位划分出来一个用户角色,如果按照 操作计算机的熟练程度,属于收银员角色中的系统用户又可以分为:熟练用 户、生疏用户。 用户角色定义就是人机工程学理论在软件开发过程中的一种应用。用户 角色的确定可以根据系统需求方提供的用户资料和行业经验,如美学观念、 用户计算机水平、用户工作内容等对用户进行初始角色定义,然后在需求调 查过程中进行修正扩充。之所以要定义用户角色,是因为不同的用户角色在 需求分析过程中的需求目标不同,侧重点也不同,甚至互相矛盾。在一个大 型系统中,需求分析人员面对的用户只能是众多单一的用户个体,他们的需 求千奇百怪。只有明确了用户角色,需求分析人员才能在纷乱复杂而又不甚 明了的用户要求中理出脉络,依据用户角色不同的优先级别,平衡众多用户 需求中的矛盾,抽象出完整的 gui 界面模型。 中南民族大学硕士学位论文 7 我们知道用户对于界面通常只能提出基本的要求,而且提出的要求也不 一定科学,因此如何诱导用户在项目进行中尽早明确自己的需求,是任何需 求分析人员都会面临的问题。用户根据自己想象中的理想系统向分析开发人 员提出自己的要求。开发方实现目标后交给用户,在系统实施运行后,用户 将实际目标系统同自己想象中的理想系统对比,同时目标系统的使用会刺激 用户修正想象中的理想系统,然后提出新的需求。由于软件界面的评审因素 同用户的心理状况、认识水平有很大关系,所以对于软件界面,用户只有在 使用过之后才能知道是否符合自己的操作习惯,颜色、字体等界面元素是否 满足自己的要求,从而提出更明确的要求。 由于在软件开发前期,用户的界面需求很模糊,甚至没有自己的理想模 型,用户提出的要求就很难量化,结果很容易被需求分析人员忽略。因此在 用户角色定义完成后应用快速原型法来设计用户界面,可以帮助用户尽快完 善自己的理想模型。 利用界面原型可以将界面需求调查的周期尽量缩短,并尽可能满足用户 的要求。快速原型法是迅速地根据软件系统的需求产生出软件系统的一个原 型的过程,其主要好处是可尽早获得更完整、更正确地需求和设计。利用界 面原型,用户可以感性地认识到未来系统的界面风格以及操作方式,从而迅 速做出判断:系统是否符合自己的感官期望,是否满足自己的操作习惯,是 否能够满足自己工作的需要。需求分析人员可以利用界面原型,诱导用户修 正自己的理想系统,提出新的界面要求2。 因此,界面需求分析的步骤可为:确定所涉及的界面元素,分析用户特 征并定义用户角色,依据用户角色的界面需求设计界面原型并不断改进完 善。 用户角色的优先等级是将不同用户的要求进行综合处理的重要参考依 据。不同用户角色对界面的要求体现在界面元素的属性上,界面元素构成用 户界面。界面元素的属性不同,最终的界面风格就不同。同一个系统中的不 同用户角色,面对界面原型,提出的要求可能产生冲突,需求分析时依据用 户角色优先级别的不同,对界面原型做出对应修改。 不同用户角色的需求在目标系统中实现方法也有不同。用户需求是否目 8 标系统中得到体现,取决于实现用户需求所带来的成本、效益,并不是所有 的用户界面需求都会体现在系统界面中。界面同用户联系紧密,在特定情况 下,可以利用培训用户的方式使用户满足系统的要求。 友好的目标系统应该是同用户的理想模型接近甚至一致的,因此需求分 析最终应该充分明确用户的潜在需求,并将用户需求在目标系统中实现。在 需求分析过程中用户面对的始终是感性的可视化的实际运行界面,因此界面 需求的结果就是满足自己要求的目标系统界面。 界面需求分析的结果应该是清晰、准确、符合用户习惯、满足人机工程 学要求的界面设计方案,能够形成清晰的开发文档。该文介绍了将模糊却又 时时存在的用户需求转化为清晰、准确的需求定义文档的一种方法。该方法 可以作为进行需求分析的基本思路在实际项目中扩充发展、灵活应用3。 2.1.1 java 语言的语言的 gui 历史历史 java gui工具包一直是一个倍受争议的话题。同样的争论也发生在其 他编程语言如smalltalk。实际上每个平台无关的语言都存在着这样的争论。 java作为当前最受广泛使用的编程语言而尤为突出。 这场争论在支持模拟组件(如widgets和control,在下文中也称之为仿造 组件)和支持本地组件(在下文中也称之为原生组件)的人们之间展开,于是 java开发者形成了两个不同的阵营,提倡使用模拟组件的swing4,和提倡 使用原生组件的swt4。 swt和swing的组件类型和特征: (1) awt组件集遵循最大公约数原则,即awt只拥有所有平台上都存在 的组件的公有集合。所以你在awt中无法获取如表或树等高级组件,因为 它们在某些平台上不支持。awt的组件特征同样遵循这一原则。它只提高 平台上公有的特征。例如awt按钮不能附着图片,因为在motif平台上,按 钮是不支持图片的。由于它低劣的组件集和特征,awt无法吸引开发者。 它是sun不推荐使用的,只是为了确保向下兼容和支持swing5。 (2) swt最初的目标之一是为了提供比awt更为丰富的组件集。它遵循 最小公倍数原则以提供一个各个平台上包含的组件的并集。思路是如果一个 中南民族大学硕士学位论文 9 组件在某个平台上包含,那么swt就会包装它并用java代码和jni来调用 它。如果一个组件在某一平台上不存在,它就会用继承并绘制composite的 方式来模拟组件。一个swt composite类似于awt的canvas。以这种方式, swt提供了较awt更为丰富的组件集。值得指出的是swt的jni封装不同于 awt,它的模拟也不同于swing。在组件特征方面,swt类似于awt。它遵 循最大公约数原则。在早期的swt版本中,swt按钮因为和awt同样的原 因不支持附着图片。在之后的版本中,许多缺失的特征采用模拟的方式补 全。但仍有许多特征无法采用纯粹的模拟实现。swt将组件的控制交给本 地操作系统。它难以扩展。只有例如图形装饰等特征可以借助模拟绘制来自 定义实现。所以严格意义上将,swt组件的组件集和特征因其难于扩展而 不如swing来得丰富。 (3) swing是三者中最强大和灵活的。在组件类型上,它遵循最小公约 数原则。由于swing可以控制自身gui系统的全部并有很好的可扩展和灵活 性,它几乎可以创建所有你想象得到的组件。唯一的限制是它的awt容 器。在swing中你还不能跨平台地实现真正的透明化和不规则矩形窗口,因 为swing依赖于awt顶层容器例如applet,window,frame and dialog等。 除此之外,swing几乎实现了所有平台上的标准组件。 在组件特征上,swing遵循最小公倍数原则。它拥有所有平台上可提供 的组件特征。不仅如此,你还可以继承已有的swing组件并添加新的特性。 2.1.2 swt java语言的声望和它在桌面应用程序(gui程序)所取得的成就显然极 不相符,至今仍然很少能看到非常成功java桌面程序。虽然有jbuilder, netbean,jprobe等大型软件作为代表,但这仍不能证明java的gui程序是成 功的:它们的外观总是和同一操作系统平台下的其它软件显得格格不入。对 机器配置的需求也似乎永无止境。使用standard widget toolkit(swt)可以 开发出高效率的gui程序,它们拥有标准的外观,在不同的操作系统上表现 出不同的显示界面,且使用swt开发出来的应用程序具有跨平台性6。 swt本身仅仅是eclipse组织为了开发eclipse ide环境所编写的一组底层 10 图形界面api。swt无论是在性能和外观上,都超越了sun公司提供的awt 和swing。swt同awt和swing一样稳定,稳定的内容有以下两方面: 一是指性能上的稳定,其中的关键是源于swt的设计理念。swt最大 化了操作系统的图形构件api,就是说只要操作系统提供了相应图形的构 件,那么swt只是简单应用jni技术调用它们,只有那些操作系统中不提供 的构件,swt才自己去做一个模拟的实现。可以看出swt的性能上的稳定 大多时候取决于相应操作系统图形构件的稳定性。 另一个稳定是指swt api包中的类、方法的名称和结构已经少有改变, 开发程序不用担心由于swt包升级更新,而导致自己的程序代码变化过 大。从一个版本的swt更新至另一版本,通常只需要简单将swt包换掉就 可以了7,swt的结构如图2.1所示: jface swt jni windowing sub-system operating system 图 2.1 swt 的结构 swt 支持的操作系统如图表 2.1 所示: 中南民族大学硕士学位论文 11 表 2.1 swt 支持的操作系统 操作系统操作系统 用户界面用户界面 windows xp/2000/nt/98 windows windows pocket pc windows red hat linux motif,gtk2.0 suse linux motif,gtk2.0 sun solaris motif ibm power pc motif qnx x86 photon mac os carbon 2.1.3 swt 与与 awt/swing 的比较的比较 总的来说swing/awt和swt在事件处理机制上是类似的,窗口组件的 树状结构也是类似的。图形用户界面系统在事件处理设计上有两大类,一类 是单线程模型,一类是多线程模型。在事件处理机制上,三者都是遵循单线 程规则。单线成模型对于事件处理不保证线程安全性(thread safety),所有 的事件处理都在event dispatch thread(edt)上进行,此一类事件模型通常叫 做单线程模型。这种模型规定所有对组件的访问操作必须在edt上完成。为 什么对于组件的访问需要在edt上完成?这主要是为了保证对于组件状态的 改变是同步的,保证了界面组件的可确定性。这中模型是大部分图形用户界 面工具采用的模型,包括swing/awt、swt、gtk、winform等等。 这种模型的好处是,结构设计和代码实现都比较简单,避免了为了实现 线程同步的复杂处理。但是也带来了一些问题,最常见的问题是,程序员容 易将长时间复杂任务的处理放在事件处理函数完成,造成edt线程被阻塞, 12 给用户造成界面失去响应的错觉。其实人们对于swing速度慢和反映迟钝的 感觉大部分来源于此,简单的说,是程序员的问题,而不是swing自身的问 题,是因为程序员没有理解这种事件处理机制造成的。其实在swt、 gtk、winform等任何以这种事件模型为基础的工具都会出现。重要的方法 就是将长时间处理的任务放在事件处理函数中。 多线程模型中,所有的事件处理都是在异步线程中进行,界面组件同步 访问的操作需要程序来保证。这种模型设计本身很复杂,而且对于程序开发 来说要求比较高,必须对线程同步编程很熟悉,而且花在同步上的操作影响 了平台的性能。一般现在的图形界面工具都不再采用这种方式。 下面比较一下swing/awt/swt在api、gui特征以及实现方法的不同。 在api上,swing和awt是兼容的,swt是单独的一套接口。(1) swing/awt 的组件在生成时可以脱离父组件独立存在,swt必须有父组件存在。这主 要是由于swt的资源是自己管理,swt程序必须负责释放不用的资源,为 了避免这种释放资源的重复性,swt父组件被设计成在析构时自动递归调 用子组件的析构函数。(2) swing/awt的资源回收由垃圾收集器负责,swt 必须由swt程序显式释放。(3) swing/awt的事件线程循环不需要程序显式 启动,swt必须要程序来显式启动。swing/awt和swt在布局管理器上是 类似的,没有太大区别8。 在gui特征上,有两个比较层面,一个是组件种类,一个是组件本身特 征。在理解这些特征时,有这样一个准则:java是平台无关的语言,因此它 对应用程序所提供的api一定要各个平台都相同,gui特征其实也是api,所 以gui的特征必须在各个平台都相同。组件类型上,awt采用的是最大公约 数方法,而swing/swt采用的是最小公倍数方法。简单的说awt是各个平 台所有组件集合的交集,而swing和swt则是各个平台组件的并集。假设操 作系统平台os1上提供组件c1,c2,c3,c4,c7,而os2提供c1, c2,c3,c4,c6,os3提供c1,c2,c3,c4,c5,那么其中的阴影部 分就是awt所实现的组件,由于c5、c6和c7是各个平台所特有的,因此 awt中就不包含这些组件。比如table和tree在java支持的某些操作系统平台 中不包含,所以在awt中就没有table和tree。由于awt的组件太贫乏,复 中南民族大学硕士学位论文 13 杂的应用程序中不使用awt。swing和swt提供的组件是各平台所有组件的 并集,这样就解决awt的组件贫乏的缺陷。也就是说,swing和swt提供的 组件包括c1到c7的所有组件,而awt只提供c1到c4的所有组件。从组件本 身的特征来看,swt和awt采用了相同的策略,即最大公约数,而swing采 用的是最小公倍数。如下图所示,假设对于同一个组件c,如果它在os1上 提供的特征包括a,b,c,d,e,而os2上提供的特征包括a,b,c,而 os3包括的特征有a,b,c,d,那么swt和awt提供的组件特征只包括 a,b,c,而swing的包含的平台特征包括a,b,c,d,e。由于solaris 平台上的按钮不提供对于图标的支持,所以swt和awt的独立按钮就不提 供对于按钮图标的支持,而swing提供按钮图标的支持。在实现方法上, awt采用java+native c peer(一种jni调用)方法,swt根据各平台的不同 情况,一部分组件使用java+java peer+jni wrapper,一部分采用java模拟的 方法,而swing则采用所有组件都纯粹java模拟的方法9。 其中awt native peer impl部分都是c语言写的,在各种操作系统上是不 同的,但是它们和awt component组件之间的awt-peer jni调用接口是不变 的,awt component的java代码实现在各个平台上都是相同的,最后awt component向application提供同一的api接口。 因此swt的java代码实现部分在各个平台是不同的,它的c代码部分即 jni wrapper部分只是一个各平台gui api的jni简单映射,swt通过java peer在各平台的不同实现填平了各平台差异,从而给application提供同一的 api接口。当然swt对于某种平台上缺少的组件采用的方法和swing基本类 似。 当 然 swing 是 建 立 在 awt 基 础 上 的 , 对 于 一 些 顶 层 容 器 类 如 frame/dialog/window以及applet是直接采用awt的,这儿为了方便并没有 画出。由于java2d api是个平台无关的,因此swing的java实现代码在所有 平台除了与swing的look and feel相关的东西以外都是相似的10。 14 2.2 、lucene 搜索引擎二次开发技术分析 lucene 不是一个完整的全文索引系统,而是一个用 java 写的全文索 引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/ 检索功能,lucene 提供二进制 api 函数库,在此平台上可以进行二次开发 来满足业务需求。 lucene 的 api 接口设计的比较通用,输入输出结构都很 像数据库的表-记录-字段,所以很多传统的应用的文件、数据库等都可以 比较方便的映射到 lucene 的存储结构/接口中。总体上看:可以把 lucene 当成一个支持全文索引的数据库系统11。 2.2.1 搜索引擎的历史搜索引擎的历史 90年初当时万维网12 (world wide web)还未出现,为了查询散布在各个 分散的主机中的文件,曾有过archie,gopher等搜索工具,随着互联网的迅 速发展,基于http访问的web技术的迅速普及,它们就不再能适应用户的 需要。在1994年1月,第一个既可搜索又可浏览的分类目录einet galaxy (tradewave galaxy)上线,它还支持gopher和telnet搜索。同年4月, yahoo目录诞生,随着访问量和收录链接数的增长,开始支持简单的数据库 查询。早期的目录导航系统缺点在于网站收录、更新都是要考人工维护,所 以无法胜任信息量的剧增。 1994年7月,lycos推出了基于robot的数据发现技术,并支持搜索结果 相关性排序,并且他第一个开始在搜索结果中使用了网页自动摘要。 infoseek也是同时期的一个重要代表,是搜索引擎史上一个重要的进步。 1995 年,一种新的搜索引擎工具出现了元搜索引擎,第一个元搜索 引擎是华盛顿大学的学生开发的metacrawler。用户只需提交一次搜索请 求,由搜索引擎负责转换处理后提交给多个预先选定的独立搜索引擎,并将 从各独立搜索引擎返回的所有查询结果,集中起来处理后再返回给用户。 1995 年12月才登场亮相的altavista推出了大量的创新功能使它迅速到 达当时搜索引擎的顶峰,它第一个支持自然语言搜索的搜索引擎,具备了基 中南民族大学硕士学位论文 15 于网页内容分析,智能处理的能力,第一个实现高级搜索语法的搜索引擎 ( 如 and 、 or 、 not 等 ) , 同 时 altavista 还 支 持 搜 索 新 闻 群 组 (newsgroups) ,搜索图片等具有划时代意义的功能。同时期还有inktomi, hotbot等搜索引擎。 1997年8月northernlight 公司正式推出搜索引擎,它第一个支持对搜索 结果进行简单的自动分类,也是当时拥有最大数据库的搜索引擎之一。 1998年10月,google诞生。它是目前最流行的搜索引擎之一,具备很多 独特而且优秀的功能,并且在界面等实现了革命性创新。 1999年5月,fast(alltheweb)公司发布了自己的搜索引擎alltheweb, 它的网页搜索可利用odp自动分类,支持flash和pdf搜索,支持多语言搜 索,还提供新闻搜索、图像搜索、视频、mp3、和ftp搜索,拥有极其强大 的高级搜索功能。它曾经是最流行的搜索引擎之一,后在2003年2 月被 overture收购。 在中文搜索引擎领域,1996年8月成立的搜狐公司是最早参与作网络信 息分类导航的网站。由于其人工分类提交的局限性,随着网络信息的暴增, 逐渐被基于robot自动抓取智能分类的新一代信息技术取代。 台湾中正大学吴升教授所领导的gais实验室1998年1月创立了openfind 中文搜索引擎,是最早开发的中文智能搜索引擎,采用gais实验室推出多 元排序(polyranktm)核心技术,截止2002年6月,宣布累计抓取网页35亿, 开始进入英文搜索领域。 北大天网是教育网最流行的搜索引擎,它由北大计算机系网络与分布式 系统研究室开发,于1997年10月29日正式在cernet上提供服务,2000年初 成立天网搜索引擎新课题组,由国家973重点基础研究发展规划项目基金资 助开发,收录网页约6000万,利用教育网优势,有强大的ftp搜索功能。 百度中文搜索由超链分析专利发明人、前infoseek资深工程师李彦宏和 好友徐勇2000年1月创建,目前支持网页信息检索,图片,flash,音乐等多 媒体信息的检索。并且百度在中文领域第一个开始使用ppc经营模式。 以上的搜索引擎都是闭源项目,使用者只能使用搜索引擎提供的服务进 行搜索,搜索引擎提供的数据在一定的程度上并不能满足我们搜索数据的需 16 要,为此lucene诞生了。 lucene作为一个有java实现的成熟、自由、开源的信息检索软件包,现 已得到了apache软件许可协议的授权;并且它具有清晰的整体架构,强大 的索引、分析、过滤、搜索功能以及高度可扩展性。 2.2.2 lucene 索引过程索引过程 在对数据进行搜索前,需要对搜索的数据建立索引。lucene 搜索引 擎建立索引对象的元数据单元为文本,凡是可以从搜索对象中提取文本信息 的对象都可以用来搜索。lucene 建立索引的步骤如图 2.1 所示: 图 2.1 lucene 索引建立过程 html pdfimagems 解析器 解析器 解析器解析器 分 析 lucene 建立索引库 中南民族大学硕士学位论文 17 lucene 索引过程分为三个主要的操作阶段:从搜索对象中抽取文本、 分析文本、对分析过的文本进行建立索引13。 在使用 lucene 建立索引数据之前,首先必须将搜索对象转换成 lucene 能够处理的格式纯文本字符流,我们将索引和搜索的对象规定可以抽取为 文本字符的文件,这样我们就能简便地用这些文件的内容来填充域的实例。 首先,需要从对象文档中提取文本信息,然后用这些提取出来的数据来创建 lucene 的 document 对象及其对应的 field 对象。在索引图像对象的时候需 要将图像中的外部信息和内部信息提取为文本字符信息。 一旦完成了针对待索引数据对象的预处理操作,并创建了带有若干个域 的 document 对象,就可以调用 indexwriter 的 adddocument (document)方 法,将数据传递给 lucene 来进行索引操作。在对数据进行索引处理时, lucene 会首先分析(analyze)数据使之更加适合被索引。分析数据时,先 将文本数据切分成一些大块或者语汇单元(tokens) ,然后对它们执行一些 可选的操作;去掉一些与搜索无关的文本字符流信息,保留搜索数据对象关 键信息。 对输入数据分析处理完之后,就可以将结果写入到索引文件中。lucene 将输入数据以一种称为倒排索引(inverted index)的数据结构进行存储。在 进行关键字快速查找时,这种数据结构能够有效地利用磁盘空间。lucene 会使用倒排结构存储数据的原因是:把从文档中抽取出的语汇单元看作是查 找关键字,而不是把文档作为中心实体。 2.2.3 信息搜索信息搜索 在对搜索对象建立索引之后便可使用 lucene 进行搜索。lucene 搜索的 过程与操作数据库的 sql 语句类似,在 lucene 中搜索的最小单元为 term。与 field 对象类似,它由一对字符串元素组成:字段的名称和字段的 值。lucene 搜索的搜索结果返回的是 hits 对象,可以通过它再访问 documen 中 field 中的内容。在信息搜索过程中需要使用语言分析器、查询 18 分析器、搜索器。 2.2.4 索引优化索引优化 优化索引其实就是将多个索引文件合并成单个文件的过程,它是为了 减少索引文件的数量,并且能在搜索时减少读取索引文件的时间而进行的操 作。使用document对象添加信息到索引中时,lucene先把这些对象缓存到 内存中,然后将其合并成一个段,最后再把这个段写入磁盘,同时也可以根 据 预 先 的 要 求 把 它 和 磁 盘 上 原 有 的 段 合 并 。 虽 然 可 以 通 过 使 用 mergefactor、maxmergedocs和minmergedocs参数控制lucene对段的合并过 程,不过当索引操作完成后,lucene的索引里可能还是会有若干个不同的 段。 虽然应用程序可以很好地对一个包含多个段(segment)的索引进行搜 索,但是lucene的api函数可以让用户进一步优化这个索引,从而减少 lucene所消耗的资源,并能进一步改善应用程序的搜索性能。对索引进行优 化会把所有段合并成单个段,可以通过调用indexwriter的optimize()方法来 优化一个索引。索引的优化过程涉及很多磁盘的输入输出操作,所以要恰当 地进行索引的优化操作。 必须强调的是,对索引优化只会提高搜索操作的速度,它对索引过程的 速度没有影响。向一个未优化的索引中加入新的document对象和向一个已 优化的索引中加入 document对象的速度是一样的。优化过的索引能提高搜 索的速度是由于lucene只需要打开并运行较少的文件,而未优化过的索引则 相反。值得指出的是,lucene对一个索引的优化操作是通过把已存在的段合 并成一个全新的段来完成的,这些已存在段的内容最终会在新的段中表示出 来。因而在进行优化时,使用的磁盘空间会有明显的增加。在新段创建完成 时,lucene删除并移除这些旧段。因此,在旧的段还没有被删除之前,索引 占用的磁盘空间会变成原来的两倍,因为此时新段和旧段都会存储在索引 中。在优化完成后,所占用的磁盘空间会降回到优化前的状态。 虽然在索引过程中的任意时刻、任意进程都能对索引文件进行优化,而 且这样做也不会损坏索引文件或使其不能被搜索。优化操作的最佳时机是在 中南民族大学硕士学位论文 19 索引过程结束之后,在索引过程中进行优化会使优化操作耗费更多的时间。 2.3 、中文分词 搜索引擎对数据搜索质量的好坏在一定程度是取决于对搜索对象信息的 分词的好坏。众所周知,英文是以词为单位的,词和词之间是靠空格隔开, 而中文是以字为单位,句子中所有的字连起来才能描述一个意思。拼音文字 分词相对象形文字分词要简单,拼音文字分词只需要对空格处理后就可以得 到分词,而对于象形文字来说需要按词组来进行分词,比如“我是一个学 生”,分词的结果是:我/是/一个/学生。中文分词技术属于自然语言处理技 术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是 词,对其处理过程就是分词算法。现有的分词算法可分为三大类:基于字符 串匹配的分词方法、基于理解的分词方法和基于统计的分词方法15。 2.3.1 基于字符串匹配的分词方法基于字符串匹配的分词方法 这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串 与一个机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功 (识别出一个词) 。按照扫描方向的不同,串匹配分词方法可以分为正向匹 配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配 和最小(最短)匹 配;按照是否与词性标注过程相结合,又可以分为单纯 分词方法和分词与标注相结合的一体化方法。 2.3.2 基于理解的分词方法基于理解的分词方法 这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效 果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语 义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系 统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等 20 的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过 程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼 统、复杂性,难以将各种语言信息组织成机器可直 接读取的形式,因此目 前基于理解的分词系统还处在试验阶段。 2.3.3 基于统计的分词方法基于统计的分词方法 从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出 现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率 能够较好的反映成 词的可信度。可以对语料中相邻共现的各个字的组合的 频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉 字x、y的相邻共现概率。互现信息体现了汉字之间结合关系的紧密程度。 当紧密程度高于某一个阈值时,便可认为此词组可能构成了一个词。这种方 法只需对语料中的字组频度进行统计,不需要切 分词典,因而又叫做无词 典分词法或统计取词方法。但这种方法也有一定的局限性,会经
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建省泉州市晋江智信大数据科技有限公司招聘10人考前自测高频考点模拟试题及完整答案详解一套
- 2025年镇江市高等专科学校公开招聘高层次人才10人长期模拟试卷及答案详解(易错题)
- 2025江苏海事职业技术学院招聘高层次人员28人考前自测高频考点模拟试题及答案详解(全优)
- 2025江苏常州市属事业单位引进高层次人才模拟试卷及答案详解(全优)
- 2025内蒙古森工集团招聘50名高校毕业生(第一批)考前自测高频考点模拟试题及答案详解(名师系列)
- 2025贵州黔西南州交通建设发展中心招聘公益性岗位工作人员3人模拟试卷及答案详解(夺冠系列)
- 2025广西壮族自治区文化和旅游厅幼儿园勤杂工(残疾人专岗)招聘1人模拟试卷附答案详解
- 2025河南郑州高新区枫杨社区卫生服务中心招聘模拟试卷及参考答案详解
- 2025年上海大学公开招聘岗位(第二批)考前自测高频考点模拟试题附答案详解(典型题)
- 2025湖南邵阳市新宁县政协中心公开选调工作人员模拟试卷及答案详解(名校卷)
- 2025年中国咖啡行业行业市场调查研究及投资前景预测报告
- 2025年戏剧与影视学专业考研试题及答案
- 2024年注会考试《经济法》真题及答案
- 无人驾驶生产工艺流程
- 2025年上海高考数学重点知识点归纳总结(复习必背)
- 第15课明至清中叶的经济和文化(课件)-高一中外历史纲要上(课件教学视频)
- 辽宁省抚顺市新抚区2024-2025学年八年级上学期10月月考数学试卷(含答案)
- 金属腐蚀与防护技术教具考核试卷
- caxa电子图板教程
- 维修人员认证与培训体系
- 职业技术学院《酒店财务管理》课程标准
评论
0/150
提交评论