基于Lucene的索引系统的设计与实现

来源 :现代情报 | 被引量 : 0次 | 上传用户:fenglu84
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  〔摘 要〕索引系统是搜索引擎的数据大本营,在搜索引擎发展早期,能够索引的网页数量代表了整个行业的技术发展水平。Lucene全文检索技术是信息检索领域广泛使用的基本技术,它是一个优秀的开源全文本搜索技术框架,本文详细分析了索引系统相关技术和Lucene的索引系统结构。
  〔关键词〕搜索引擎;索引;lucene;倒排索引
  〔中图分类号〕TP393.09 〔文献标识码〕A 〔文章编号〕1008-0821(2009)07-0169-03
  
  The Design and Implementation of Indexing System Based on LuceneHuang Shaolin Wang Hua Zhang Yuhong Jiang Yifeng
  (School of Information Engineering,Capital Normal University,Beijing 100037,China)
  〔Abstract〕Index system is the data center of the search engine,at the beginning of the search engine,the number of the pages that can be indexed to represent the technology level of the whole industry.Lucene full-text retrieval,as a basic skill,is widely used in the field of information retrieval;it is an excellent open-source full-text search technology framework.The paper analyzed Lucene’s indexing system structure in detail and gave some introduction about the related technology of index system.
  〔Key words〕search engine;index;lucene;inverted index
  
  无论在工业界还是在学术界,搜索引擎一致地被认为分为下载、分析、索引和查询四大系统,这四大系统相互配合共同实现搜索引擎的快、全、准、稳的四大需求。索引系统是搜索引擎最核心的模块之一,索引过程就是将普通的文档形式转换为可快速检索的索引形式。例如,书目包含的目录。其中每一条目就是一个索引,用来标识某个章节的页码,帮助读者快速浏览,索引就是这样一个短小精炼的检索信息的信息。
  
  1 lucene及索引技术介绍
  
  1.1 lucene介绍
  Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,它为数据访问和管理提供了简单的函数调用接口,可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。Lucene的API接口设计得比较通用,输入输出结构都很像数据库的表、记录和字段,所以很多传统的应用的文件、数据库等都可以比较方便的映射到Lucene的存储结构或接口中。总体上看,可以先把Lucene当成一个支持全文索引的数据库系统。
  1.2 索引技术
  索引是在搜索时使用到的一种特殊的数据结构。当文档的数量相当庞大,并且这些文档中的信息相对稳定时,建立索引可以大大提高搜索时的效率。在使用索引进行查找时,首先对需要索引的文档进行预处理,建立关于这些文档的索引结构。索引技术主要有以下3种:倒排索引,后缀数组和签名文件。其中,倒排索引技术在当前大多数的信息检索系统中得到了广泛的应用,它对于关键词的搜索非常有效,在lucene中也是使用的这种技术。后缀数组技术在短语查询中具有很快的速度,但是这样的数据结构在构造和维护时都比较复杂一些。签名文件技术在20世纪80年代比较流行,但是后来倒排索引技术逐渐超越了它。
  1.3 倒排索引技术
  倒排索引是目前搜索引擎公司对搜索引擎最常用的存储方式,也是搜索引擎的核心内容,倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引。倒排索引是以关键字和文档编号结合,并以关键字作为主键的索引结构(见图1)。下面利用一个例子来说明倒排索引:
  
   Lucene索引index由若干段(segment)组成,每一段由若干的文档(document)组成,每一个文档由若干的域(field)组成,每一个域由若干的项(term),组成。项是最小的索引概念单位,它直接代表了一个字符串以及其在文件中的位置、出现次数等信息。域是一个关联的元组,由一个域名和一个域值组成,域名是一个字串,域值是一个项,比如将“标题”和实际标题的项组成的域。文档是提取了某个文件中的所有信息之后的结果,这些组成了段,或者称为一个子索引。子索引可以组合为索引,也可以合并为一个新的包含了所有合并项内部元素的子索引。
  2.2 lucene索引的建立
  建立索引是使用搜索引擎的第一步,从整体上看,lucene建立索引的过程有以下4步(见图3):提取文本、构建Document、分析、建立索引。下面分别从这4个方面进行分析。
  
   2.2.1 提取文本
  为了使用Lucene对文档数据建立索引,第一步就是要把这些需要建立索引的文档数据转换成lucene可以处理的类型。假设现在的任务是对一系列PDF文档数据建立索引。首先为了使lucene能够对这些文档数据建立索引,必须想办法从这些PDF文档中提取文本信息,并且使用这些提取出来的信息构建lucene中的Document文档和Field。同样,当我们需要对word文档或者其它类型的文档建立索引时也面临着类似的问题。
  2.2.2 构建Document
  构建Document是索引建立的第二步。这一目的就是将前面所提取出来的文本组装成lucene可以识别的格式来为索引的建立做准备。
  2.2.3 分析并建索引
  在提取了需要lucene建立索引的数据并且构建了Document之后,接下来就可以调用IndexWriter类的addDocument()方法来使lucene建立索引了。在这样的调用中,lucene会首先对所要建立索引的数据进行分析以使得在建立索引时可以更加容易地处理这些数据,然后索引器会按lucene所规定的索引格式将数据写人索引文件。
  2.3 lucene创建索引代码
  public static void CreateIndex(File indexDir)
  throws IOException
  {
  IndexWriter writer=new
  IndexWriter(sDir,new
  StandardAnalyzer(),true);
  ∥参数sDir是存放索引的目录。创建索引最重要的类是IndexWriter,其构造器有3个参∥数,第1个参数指定了存储索引文件的路径。第2个参数指定了在索引过程中使用什么∥样的分词器。第3个参数是个布尔变量,用于控制是重建索引,还是复用原有索引。
  for(int i=0;i  {
  Document doc=new Document();∥初始化一个Document
  Product product=(Product)prodList.get(i);
  File Field_name=Field.Text(“Field_name”,product.getFieldName);∥建立一个Field_name字段
  Field Field_desc=Field.Text(“Field_desc”,product.getFieldDesc);∥建立一个Field_desc字段
  doc.add(Field_name);∥将字段添加至这个Document
  doc.add(Field_desc);∥将字段添加至这个Document
  writer.addDocument(doc);∥将这个Document写入索引
  }
  writer.optimize();∥索引优化
  writer.close();∥关闭这个
  indexWriter
  }
  首先创建了类Document的一个实例,它由1个或者多个的域组成。你可以把这个类想象成代表了一个实际的文档,比如1条数据库记录,1个HTML页面,1个PDF文档,或者1个文本文件。而类Document中的域一般就是实际文档的一些属性。我们可以用不同类型的Field来控制文档的哪些内容应该索引,哪些内容应该存储。其次向文档中添加域,每个域包含两个属性,分别是域的名字和域的内容。在我们的例子中域的名字分别是Field_name和Field_desc。最后把准备好的文档添加到了索引当中。当把索引文档都添加到索引中后,要关闭索引,这样才保证lucene把添加的文档写回到硬盘上。
  另外,在创建索引的工程中你可以充分利用机器的硬件资源来提高索引的效率当需要索引大量的文件时,索引过程的瓶颈是在往磁盘上写索引文件的过程中。为了解决这个问题,lucene在内存中持有一块缓冲区。lucene的类IndexWriter提供了3个参数mergeFactor、minMergeDocs、maxMergeDocs用来调整缓冲区的大小以及往磁盘上写索引文件的频率。
  Lucene提供了删除索引的API可以删除文档,当需要更新文档时可以通过先删除再增加的方式来实现。这样索引构建模块就能够达到动态的更新索引的目的。
  
  3 总 结
  
  本文从lucene索引系统结构出发,分析了常用的索引相关技术,并详细阐述了一个基于lucene全文检索系统的索引模块设计以及实现。本文介绍的索引技术的实际应用可推广至许多其它的应用实例的设计与实现中,从而实现对目标文档的检索管理,提高检索效率。
  
  参考文献
  [1]梁斌.走进搜索引擎[M].北京:电子工业出版社,2007.10(1).
  [2]李刚,宋伟,邱哲.Ajax Lucene构建搜索引擎[M].北京:人民邮电出版社,2006.4(1).
  [3]卢亮,张博文.搜索引擎原理、实践与应用[M].北京:电子工业出版社,2007.9(1).
  [4]孙西全,马瑞芳,李燕灵.基于Lucene的信息检索的研究与应用[J].情报理论与实践,2006,(1):125-128.
  [5]管建和,甘剑峰.基于Lucene全文检索引擎的应用研究与实现[J].计算机工程与设计,2007,(2):489-491.
  [6]王莉云,王华,陈刚,等.基于lucene的全文检索系统的设计与实现[J].计算机工程与设计,2007,(24):5959-5961.
其他文献
摘 要:[目的/意义]近些年来,在线健康社区变得越来越流行。然而,较少社区能成功地维持用户并激励他们持续的分享知识。本文将社会支持理论和承诺—信任理论结合起来,构建一个集成模型来研究在线健康社区用户的持续知识分享意愿的影响因素。[方法/过程]根据获得的475份有效调查问卷,本文使用SPSS20.0和AMOS20.0检验所提出的假设。[结果/结论]研究发现,信息支持、情感支持对满意度和信任均有显著影
〔摘要〕本文就我国科技情报(信息)类事业单位改革历程、现状以及科技情报(信息)机构管理体制与运行机制的创新,谈一点自己粗浅的看法。  〔关键词〕科技情报(信息);事业单位;体制创新;改革  〔中图分类号〕G25〔文献标识码〕A〔文章编号〕1008-0821(2013)02-0121-04  随着经济全球化和信息化浪潮的日趋加快,科技情报(信息)机构正面临着国内外市场竞争加剧和科技进步等方面的严峻挑
〔摘要〕[目的/意义]通过对美国8所大学的信息安全政策体系进行研究,为国内大学加强信息安全政策体系建设提供有益的参考。[方法/过程]采用网站调查法和案例分析法研究了美国大学的信息安全政策构建的模式和特点。[结果/结论]基于对美国大学信息安全政策体系构建特点的分析,提出了5项启示性建议。  〔关键词〕美国大学;信息安全;风险控制;政策体系  DOI:10.3969/j.issn.1008-081.0
〔摘要〕政策文本是政策生命周期的核心要件,对其进行多种维度的内容挖掘与国内外的对比分析不但有利于指导政策的制定,还有益于把握国际局势,以提升国家软实力。对于政策文本内容的量化研究而言,目前的学术成果采用的方法主要有基于数理统计的内容分析类、文献计量类、社会网络分析类、文本挖掘类等方面。文章选取国际气候领域作为试点对象,采用主题模型的新视角,对采集到的政策文本数据进行基于语义的主题挖掘,并同时融合词
2019年5月24日,以“互学互鉴,促进国际型人才的培养与储备”为主题的国际教育“互学互鉴”研讨会在京召开。光明日报《留学》杂志受邀出席此次活动。来自全国各地的国际学校校长、国际大学负责人、国际教育专家、相关大学负责人、中国留学人才发展基金会相关领导出席了本次研讨会。与会嘉宾以讨论的形式,围绕“国际教育合作的引进来和走出去”“国际教育的未来发展趋势与合作”若干议题进行深度研讨交流。  “行业内我们
[摘 要]目前,“低碳经济”已经在世界各地风起云涌。中国在争当“低碳经济先锋”的同时也带来了巨大的发展机遇。作为知识潮流先驱者家园的高校图书馆理应率先响应,积极推行低碳经济。本文阐述了高校图书馆推行低碳经济发展模式的重要性,并通过管理创新、科技创新、服务创新等方面的探讨来构建低碳经济下的高校图书馆。  [关键词]低碳经济;高校图书馆;服务创新  DOI:10.3969/j.issn.1008-08
合理自我保护 为留学生活护航国外校园欺凌事件频发,如何自我保护?  近年来,校园欺凌事件关注度逐渐攀升,成为一个受到社会各界广泛关注的问题。在国外,校园欺凌事件并不鲜见,各种因校园欺凌造成的人身伤害案件层出不穷。而在异国求学的留学生们,由于身边没有家人照顾,很容易就会成为校园欺凌的受害者,受到身体和心灵上的双重伤害。  校园欺凌问题不可轻视  校园欺凌英文为School bullying,指在校园
暑校,留学的试金石。  近年来,留学低龄化的潮流兴起,越来越多准备出国留学的低年级学生,利用暑假出国读暑校。在被业内人士称为“迷你留学”的暑校中,学生可以选择大学课程,修满一定的学分,同时也可以参加多彩的校园活动和社区服务,体验多元文化的大学生活。同样地,选择读暑校的学生在学习期间需要面对课题报告、个人论文以及小组合作等课题项目发起的重重挑战。  多样暑校课程  现在市场中的暑校课程主要分为三类。
〔摘 要〕Millennium系统是美国INNOVATIVE公司开发的一个功能齐全的图书馆集成管理系统,其发展已超过25年历史,在国内外拥有众多用户。我馆于2006年引进该系统,本文结合2年的编目模块实践,从数据套录、统计、数据质量控制等方面,全面论述该系统在我馆编目工作中的应用,同时分析其存在的问题并提出解决的办法。  〔关键词〕Millennium系统;编目;数据质量控制  〔中图分类号〕G2
〔摘 要〕 本文阐述了在富媒体环境下和数字化校园建设的架构下,数据的类型和集合不断增加,技术发展推动新一代图书馆知识资源建设和知识规划的变革,富媒体环境下信息技术和资源类型使新一代图书馆的服务框架、资源框架、知识链框架、管理框架(质量控制框架)、技术支撑框架、数字空间知识框架、外部辅助框架等发生变化。具体影响有环境、空间、资源、新技术、管理、协同关系、实现流程、服务、使用、安全、保存、外包、交互等