信息检索论文基于lucene的实验大学论文

上传人:壹****1 文档编号:504400672 上传时间:2023-02-15 格式:DOC 页数:10 大小:170KB
返回 下载 相关 举报
信息检索论文基于lucene的实验大学论文_第1页
第1页 / 共10页
信息检索论文基于lucene的实验大学论文_第2页
第2页 / 共10页
信息检索论文基于lucene的实验大学论文_第3页
第3页 / 共10页
信息检索论文基于lucene的实验大学论文_第4页
第4页 / 共10页
信息检索论文基于lucene的实验大学论文_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《信息检索论文基于lucene的实验大学论文》由会员分享,可在线阅读,更多相关《信息检索论文基于lucene的实验大学论文(10页珍藏版)》请在金锄头文库上搜索。

1、 基于Lucene的实验报告 信息检索系统介绍 信息检索系统是借助信息检索技术,如全文检索等手段帮助用户检索特定信息的工具。它可以正确地表示,存储和组织信息,同时还提供信息的访问。在这里,信息的概念是非常广泛的,它可以是一篇文章,一个文本,一个网页,一封电子邮件,一张照片,甚至是一个收集的虚拟信息。检索的整个过程包括:文本数据库的构建、索引和检索。 信息检索的过程: 1 建立一个文本库 一个信息检索系统需要准备之前,搜索功能的开发。首先,必须建立一个文本数据库。该文本数据库用于存储用户可以检索的所有信息。在此基础上,确定了检索系统中的文本模型。文本模型是一种被系统识别的信息格式,具有冗余性低等

2、特点。当然,在系统的运行过程中,文本数据库的信息可能会不断变化。 2建立索引当您拥有文本模型时,您应该创建一个基于数据库中的文本的索引.。索引可以大大提高信息检索的速度。建立索引的方法有多种,这取决于信息检索系统的大小。大规模的信息检索系统(如百度,谷歌,如搜索引擎)被用来创建一个倒排索引。3搜索 索引文本后,可以开始搜索它。搜索请求通常由用户提交,请求进行分析,检索结果返回索引中。 Lucene 随着系统信息的越来越多,怎么样从这些信息海洋中捞起自己想要的那一根针就变得非常重要了,全文检索是通常用于解决此类问题的方案,而Lucene则为实现全文检索的工具,任何应用都可通过嵌入它来实现全文检索

3、。 Lucene是一个开源全文检索工具包,它是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。 Lucene工作方式 lucene提供的服务实际包含两部分:一入一出。所谓入是写入,即将你提供的源(本质是字符串)写入索引或者将其从索引中删除;所谓出是读出,即向用户提供全文搜索服

4、务,让用户可以通过关键词定位源。写入流程源字符串首先经过analyzer处理,包括:分词,分成一个个单词;去除stopword(可选)。将源中需要的信息加入Document的各个Field中,并把需要索引的Field索引起来,把需要存储的Field存储起来。将索引写入存储器,存储器可以是内存或磁盘。读出流程用户提供搜索关键词,经过analyzer处理。对处理后的关键词搜索索引找出对应的Document。用户根据需要从找到的Document中提取需要的Field。我们可以看到,Lucene的使用主要体现在两个步骤:1 创建索引,通过IndexWriter对不同的文件进行索引的创建,并将其保存在索

5、引相关文件存储的位置中。2 通过索引查询关键字文档一些需要用到的概念analyzerAnalyzer是分析器,它的作用是把一个字符串按某种规则划分成一个个词语,并去除其中的无效词语,这里说的无效词语是指英文中的“of”、“the”,中文中的“的”、“地”等词语,这些词语在文章中大量出现,但是本身不包含什么关键信息,去掉有利于缩小索引文件、提高效率、提高命中率。分词的规则千变万化,但目的只有一个:按语义划分。这点在英文中比较容易实现,因为英文本身就是以单词为单位的,已经用空格分开;而中文则必须以某种方法将连成一片的句子划分成一个个词语。具体划分方法下面再详细介绍,这里只需了解分析器的概念即可。d

6、ocument用户提供的源是一条条记录,它们可以是文本文件、字符串或者数据库表的一条记录等等。一条记录经过索引之后,就是以一个Document的形式存储在索引文件中的。用户进行搜索,也是以Document列表的形式返回。field一个Document可以包含多个信息域,例如一篇文章可以包含“标题”、“正文”、“最后修改时间”等信息域,这些信息域就是通过Field在Document中存储的。Field有两个属性可选:存储和索引。通过存储属性你可以控制是否对这个Field进行存储;通过索引属性你可以控制是否对该Field进行索引。这看起来似乎有些废话,事实上对这两个属性的正确组合很重要,下面举例说

7、明:还是以刚才的文章为例子,我们需要对标题和正文进行全文搜索,所以我们要把索引属性设置为真,同时我们希望能直接从搜索结果中提取文章标题,所以我们把标题域的存储属性设置为真,但是由于正文域太大了,我们为了缩小索引文件大小,将正文域的存储属性设置为假,当需要时再直接读取文件;我们只是希望能从搜索解果中提取最后修改时间,不需要对它进行搜索,所以我们把最后修改时间域的存储属性设置为真,索引属性设置为假。上面的三个域涵盖了两个属性的三种组合,还有一种全为假的没有用到,事实上Field不允许你那么设置,因为既不存储又不索引的域是没有意义的。termterm是搜索的最小单位,它表示文档的一个词语,term由

8、两部分组成:它表示的词语和这个词语所出现的field。tockentocken是term的一次出现,它包含trem文本和相应的起止偏移,以及一个类型字符串。一句话中可以出现多次相同的词语,它们都用同一个term表示,但是用不同的tocken,每个tocken标记该词语出现的地方。Lucene所需要用到的外部工具八爪鱼采集器 八爪鱼数据采集系统以完全自主研发的分布式云计算平台为核心,可以在很短的时间内,轻松从各种不同的网站或者网页获取大量的规范化数据,帮助任何需要从网页获取信息的客户实现数据自动化采集,编辑,规范化,摆脱对人工搜索及收集数据的依赖,从而降低获取信息的成本,提高效率。 云采集:采集

9、任务自动分配到云端多台服务器同时执行,提高采集效率,可以很短的时间内 获取成千上万条信息 拖拽式采集流程:模拟人的操作思维模式,可以登陆,输入数据,点击链接,按钮等,还能对不同情况采取不同的采集流程。 图文识别:内置可扩展的OCR接口,支持解析图片中的文字,可将图片上的文字提取出来。 中文分词 中文分词是处理中文信息的基础与关键。由于Lucene自带的分词器对英文的分词效果较好,但对中文的分词效果并不如意。为了使检索系统能更好的处理中文信息,本文采用了IKAnalyzer作为分词器。IK Analyzer是一个开源的,基于java 语言开发的轻量级的中文分词工具包。从2006年12月推出1.0

10、 版开始, IKAnalyzer已经推出了3个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer 3.X 则发展为面向Java 的公用分词组件,独立于Lucene 项目,同时提供了对Lucene 的默认优化实现。 IKAnalyzer的特性: l 采用了特有的“正向迭代最细粒度切分算法“,具有60 万字/秒的高速处理能力。 采用了多子处理器分析模式,支持:英文字母(IP 地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。 l 优化的词典存储,更小的内存

11、占用。支持用户词典扩展定义 l 针对Lucene 全文检索优化的查询分析器IKQueryParser;采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene 检索的命中率。 Lucene创建及使用方法1.写入流程:即创建索引一、 首先实例化一个构造器IndexWriterwriter=newIndexWriter(D:/index/,newIKAnalyzer(),true);/索引的存储位置这个构造函数具有三个参数:1. path:索引文件存放的路径。如:String path = E:index;2. a:分词工具,因为lucene为外国人所开发,所以对中文分词不是很友好,

12、 这里引入IKAnalyzer专门针对中文的分词。如:a= new IKAnalyzer()3. create:它是一个boolean型变量,如果为true,表示要重写指定的存放索引目录下的索引文件;如果为false,表示在指定存放索引目录下已经存在的索引文件的基础上,向其中继续追加新的索引文件。二、创建索引第一步并未创建索引,只是实例化了一个索引器,建立索引的过程是在一个IndexWriter索引器实例存在的前提下,通过为其添加Document,这样才能真正添加索引。索引是信息检索引擎工作的第一步,只有建立了索引才能进行信息检索。Lucene用Document逻辑文件和Field域来组织各种

13、数据源。Document向Lucene提供原始的要索引的文本内容,Lucene从Document中取出相关的数据源,并根据属性配置进行相应的处理,建立索引。代码如下: foreach (var item in productlist) Document doc = new Document(); doc.Add(new Field(id, item.id.ToString(), Field.Store.YES, Field.Index.UN_TOKENIZED);/其中ID、Name、Add都是数据库中的字段名, doc.Add(newField(productname,item.produc

14、tname,Field.Store.YES,Field.Index.TOKENIZED); doc.Add(newField(productdes,item.productdes,Field.Store.YES,Field.Index.UN_TOKENIZED); doc.Add(new Field(tradename, item.tradename, Field.Store.YES, Field.Index.UN_TOKENIZED); doc.Add(newField(companyname,panyname,Field.Store.YES,Field.Index.UN_TOKENIZED

15、); doc.Add(new Field(fhdes, item.fhdes, Field.Store.YES, Field.Index.TOKENIZED); doc.Add(new Field(pic, item.pic, Field.Store.YES, Field.Index.UN_TOKENIZED); doc.Add(newField(areaname,item.areaname,Field.Store.YES, Field.Index.UN_TOKENIZED); doc.Add(newField(tradeid,item.tradeid.ToString(),Field.Store.YES, Field.Index.UN_TOKENIZED); writer.AddDocument(doc); 1.Field:可以理解成索引文件中一个个的字段块,占用空间按字段长度分配。2.Store:一个内部类,它是static的,主要

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号