IT计算机基于Lucene的桌面搜索引擎.doc
《IT计算机基于Lucene的桌面搜索引擎.doc》由会员分享,可在线阅读,更多相关《IT计算机基于Lucene的桌面搜索引擎.doc(35页珍藏版)》请在三一办公上搜索。
1、目录目录1摘要3Abstract41 前言51.1 什么是全文检索与全文检索系统51.2 使用Lucene能做什么61.3 本课题研究的意义62 Lucene搜索引擎的分析与研究62.1 Lucene分析器Analyzer72.1.1 Analyzer的概述72.1.2 Lucene内建的分析器72.2 索引建立的过程82.2.1 提取文本82.2.2 构建Document92.2.3 分析并建立索引92.3 Lucene的文档格式92.3.1 文档(Document)92.3.2 字段(Field)102.4 索引的添加IndexWriter类122.4.1 初始化122.4.2 向索引添加
2、文档122.5 Lucene的索引文件格式简述122.5.1 索引的存放位置132.5.2 Lucene的索引优化132.6 搜索的流程132.6.1 初始化Lucene的检索工具IndexSearcher132.6.2 构建Query142.6.3 搜索并处理返回结果142.7 搜索与结果142.7.1 检索工具IndexSearcher类142.7.2 检索结果Hits152.8 Lucene的评分机制152.8.1 理解评分的概念152.8.2 Lucene评分算法162.9 倒排索引163 lucene搜索引擎的中文分词问题173.1 Lucene 中文分词算法选择173.2 词典构造
3、183.3 具体实现194 lucene桌面全文搜索引擎系统的分析与设计214.1 桌面搜索引擎系统的功能介绍214.2 lucene桌面搜索引擎系统使用的技术214.3 lucene桌面搜索引擎系统分析214.4 lucene桌面全文搜索引擎系统的设计234.4.1 创建windows窗体应用程序234.5 为本机的文件创建索引244.5.1 选择要建立索引的目录和索引存放的位置244.5.2 建立索引244.6 搜索的效果274.6.1 运行搜索275 总结31致谢31参考资料31基于lucene的桌面全文搜索引擎研究学 生: 杨刚指导教师: 钱涛咸宁学院 计算机科学与技术学院 湖北 咸宁
4、 437100摘要Lucene是一个用Java/C#写的全文搜索引擎工具包,支持多用户访问,访问索引速度快,可以跨平台使用.全文检索技术是信息检索领域广泛使用的基本技术.它是一个优秀的开源全文本搜索技术框架.按照Lucene的框架规范,扩展Lucene的功能,可以将Lucene很好地嵌入到自己的搜索引擎中.本文研究了Lucene的中文切分词技术,Lucene的索引原理, 根据 Lucene的系统结构详细分析了Lucene分析器、索引包、文档等结构, 描述了利用Lucene开发定制的中文全文搜索引擎的方法,实现了一个基于Lucene的桌面搜索应用实例.关键词: Lucene 全文检索技术 搜索引
5、擎 索引 中文分词Desktop search engine based on luceneStudent: Yang GangSupervisor: Tao QianSchool of computer Science&Technology,XianningCollege,Xianning Hubei, 437000AbstractLucene is a full text using Java/C# to write search engine toolkit , which supports multiaccess , visits index speed quickly ,and ca
6、n stride over platform usage. The full text search technology is the fundamental technology that the information retrieval field uses broadly. It is that one is excellent hold source full text searching for the technology frame originally. According to the Lucene frame norm , the function expanding
7、Lucenes, in the search engine being able to Lucene be implanted very good to self。Unwieldy culture has studied the Lucene Chinese segments the word technology , the Lucene index principle , the system structure according to Lucene has analysed the Lucene analyzer , index structure such as bag , docu
8、ment detailedly , has described search engine method making use of Lucene to develop custom-built Chinese full text , has realized a example applying owing to that the Lucene full text searches for.Key words: Lucene,Full text Search technology, Search engine, Index, Segment word1 前言Lucene开始是作为个人项目。1
9、997年,Lucene的作者Doug Cutting编写了Lucene。几年以后,2000年,他将Lucene放到了自己的网站上。一些人马上开始使用Lucene。2001年,Apache的人提出采用Lucene。Lucene的代码捐助也慢慢开始了,Lucene开始成为真正的合作项目。到2004年,Lucene已经有了一个强有力的开发团队。这些年来,Lucene已经被翻译为其它多种语言版本,包括C+,C#,Perl和Python。在最初的Java以及其它各版本中,Lucene的应用相当广泛。它在各种应用中为搜索提供动力,如财富100的讨论组、商业的Bug跟踪、微软提供的邮件搜索还有数十亿页面级的
10、 WEB搜索引擎。越来越多的人开始使用Lucene。下面我将更详细的介绍Lucene,并用它来构建一个自己的搜索引擎。1.1 什么是全文检索与全文检索系统全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当我们查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给我们的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文检索的方法主要分为按字检索和按词检索两种。按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词
11、有很大分别。按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现上与按字处理类似,添加同义处理也很容易。中文文字则需要切分字词,以达到按词索引的目的,关于这方面的问题,是当前全文检索技术尤其是中文全文检索技术中的难点,在此不做详述。全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。一般来说,全文检索需要具备建立索引和提供查询的基本功能,此外现代的全文检索系统还需要具有方便的用户接口、面向WWW的开发接口、二次应用开发接口等。功能上,全文检索系统具有建立索引、处理查询返回结果集、增加索引、优化索引结构等
12、功能,外围则由各种不同应用具有的功能组成。结构上,全文检索系统具有索引引擎、查询引擎、文本分析引擎、对外接口等,加上各种外围应用系统共同构成了全文检索系统。 图1.1 全文检索系统结构1.2 使用Lucene能做什么Lucene可以对任何的数据做索引和搜索。Lucene不管数据源是什么格式,只要它能被转化为文字的形式,就可以被Lucene所分析利用。也就是说不管是Word、Html、PDF还是其他什么形式的文件只要你可以从中抽取出文字形式的内容就可以被Lucene所用,就可以用Lucene对它们进行索引以及搜索。1.3 本课题研究的意义本课题研究在于用户对本机硬盘的搜索。由于技术的进步,硬盘容
13、量越来越大,用户在寻找某个急需的文件时难免会花费大量时间在上面,作为桌面搜索引擎,可以很好的帮用户解决这一问题。对于普通用户来说,桌面搜索系统可以对本地硬盘上大量的文本数据进行筛选,获得文件的位置信息并可打开文件进行操作,给普通用户带来极大的方便。另外用户可以将感兴趣的站点进行下载分析,选择含有关键字的网页浏览。对于计算机相关人员尤其是网站维护管理人员来说,可以在收集的资源中快速找到需要的信息发布到网站上,另外在无版权问题时,可下载网页资源进行分析找到所需的信息,然后摘录到自己的网站上。2 Lucene搜索引擎的分析与研究建立索引是使用搜索引擎功能的第一步。关于Lucene建立索引的这一部分内
14、容比较多,从索引的建立到索引的优化, 索引的同步机制都是非常重要的内容,而且Lucene索引这部分内容与Lucene的搜索模块也是密切相关的。除了检索这个必不可少的步骤外,搜索也是非常重要的一步。只有能够搜索到用户需要的内容,才算是一个好的搜索引擎。在建立索引和检索过程中,分析是很重要的一个环节。Lucene使用分析器(Analyzer)来对各种各样的输入进行分析,可以说Analyzer在Lucene开发包中占有举足轻重的地位,它的运行性能和分析能力直接影响到搜索引擎的许多环节。2.1 Lucene分析器Analyzer2.1.1 Analyzer的概述Analyzer中文可以翻译成“分析器”
15、,是Lucene中内置的一种工具。它主要用于分析搜索引擎遇到的各种文本。所谓分析,用更具体的话说其实就是“分词”和“过滤”。从图4-1中可以看出,分析器位于索引和文本资源之间,这样所有进入索引库的文本资源都应当经过分析器的分析,以此来控制索引中的内容。未经过分析器分析的文本如果直接进入索引,可能会引起各种各样数据的一致性问题,同时会降底索引的效率,进而影响整个搜索引擎的性能。正如前面所述,在Lucene中,一个分析器主要包括分词器和过滤器两种组件。分词器就是用于对文本资源进行切分,将文本按规则切分为一个个可以进入索引的最小单位。而过滤器的功能则是对这种最小单位进行预处理,比如大写转小写,复数转
16、单数等。这种操作可以简单(如最简单的大写转小写),也可以相当复杂(如根据语义改写拼写错误的单词)。 图2.1 分析器的位置2.1.2 Lucene内建的分析器Lucene提供了几种不同环境和需求下使用的Analyzer,最常用的如StandardAnalyzer,另外还有SimpleAnalyzer,WhitespaceAnalyzer,GermanAnalyzer等,这些都是被统一称为是Lucene内置的Analyzer。这其中的每一种Analyzer都有它自己独特的功能和用途,因此在使用时可根据不同的需要选择适合的Analyzer。2.2 索引建立的过程在Lucene所公开的API中,仅有
17、为数不多的方法可以在建立索引时使用。从这一方面来看,大大简化了使用Lucene建立索引的过程,提高了Lucene的易用性;从另一方面来看,在简单的API的背后,隐藏着更为复杂的操作,并且只有熟悉并掌握了这些更为复杂的操作过程,才能更加灵活地使用Lucene建立索引,逐步成为以为使用Lucene的高手。从整体来看,Lucene建立索引的过程有以下4步:提取文本;构建Document;分析;建立索引。2.2.1 提取文本为了使用Lucene对文档数据建立索引,第一步就是要把这些需要建立索引的文档数据转换成Lucene可以处理的类型。在使用Lucene过程中不得不面对一些更为复杂的文档数据类型,如图
18、4-2所示。 图2.2 面对多种文档类型的处理假设现在的任务是对一系列的PDF文档数据建立索引。首先为了使Lucene能够对这些文档数据建立索引,必须先想办法从这些PDF文档中提取出文本信息,并且使用这些提取出来的信息来构建Lucene中的Document和Field。同样,当我们在需要对Word文档或者其它任何类型的文档建立索引时也面临着类似的问题。2.2.2 构建Document构建Document是索引建立过程的第二步。有关Lucene Document的概念在后面会有详细说明,此处不再熬述。这一步的主要目的就是将前面所提取出来的文本组装成Lucene可以识别的格式来为索引的建立做准备。
19、2.2.3 分析并建立索引在提取了需要Lucene建立索引的数据并且创建了Document之后,接下来就可以调用IndexWriter类的addDocument()方法来使Lucene建立索引了。在这样的调用中,Lucene会首先对所要建立索引的数据进行分析(analysis)以使得在建立索引时可以更加容易地处理这些数据,然后索引器会按Lucene所规定的索引格式将数据写入索引文件。2.3 Lucene的文档格式在前面已经提到了两个概念:Document(文档)和Field(字段)。Document和Field在Lucene的索引过程中占有举足轻重的地位,而且,在Lucene的搜索部分也会涉及
20、到相应的概念,因此可以说深入理解它们是使用Lucene的基础,下面将分别进行介绍。2.3.1 文档(Document)假设现在要对一些文本文件建立索引,首先需要确定索引的数据源。对文本文件来说,数据源可以是文件名,文件的内容,文件的最后修改时间等。对于每个不同的文件,这些数据源将提供出不同的内容,以便将来存储在索引中。在Lucene中,可以把一个Document看作是这些不同内容的集合,而“文件名”,“文件内容”等名称可以看成是对不同数据源进行分类的标记,在Lucene中我们把这些标记称为Field。从根本上来讲,Lucene的Document代表了一个需要进行索引的“单元”,任何需要进行索引
21、的“文件”都必须被转化成Document对象才能够被索引和搜索到。需要注意的是,此处在“文件”二字上加了引号,这是因为并非只有文件才能转化为Document类型,任何数据源经过组织都可以构建一个Document类型。更进一步说,Lucene并不为任何实际物理文件建立索引,而只对Document对象建立索引。所以,建立索引的第一步就是将不同的数据源组织为一个Document类型的对象。其实,可以把Document对象看成一种虚拟的文件,它自身带有多个数据源。从文件能够提供数据源这个角度上来看,Document对象与实际的物理文件基本相似,不同之处仅仅在于Lucene无法识别普通的物理文件而能识别
22、一个Document类型的对象而已。假设现在需要对一个网页执行建立索引的操作,以便在将来可以搜索到这个网页的相关内容,那么我们就需要先把这个网页转换成一个Document对象。经过分析可以知道,该网页主要有几个属性(也就是数据源)可能在将来检索时会用到,分别是网页的标题,网页的URL,网页的内容和网页的最后修改时间。因此,在为这网页构建Document对象时就应当包含这几个不同的Field。Document的基本使用方法:在document()方法中首先构造了一个Document类型的实例,然后依次往Document对象中添加了path,modified和contents 3个Field,这些
23、Field在以后搜索时都将用到,最后返回生成的Document类型的对象doc。在对Document添加Field时,使用的是Document对象的add(Field fld)方法,例如,在添加path信息到doc对象中时,先通过f.getpath()方法获取到了文件的路径,再用Field类自带的静态方法构造出一个Field实例,然后将其传给add方法以完成添加。2.3.2 字段(Field)正如前面所述,字段(Field)是与文档(Document)紧密相连的一个概念,在一个Document中,它代表了不同数据源的名称。然而,在现实中,数据源所提供的数据并不是以一种一成不变的方式进行处理,对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IT 计算机 基于 Lucene 桌面 搜索引擎
链接地址:https://www.31ppt.com/p-2394452.html