专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » 全文检索系统和Lucene介绍 »正文

全文检索系统和Lucene介绍

来源: 发布时间:星期四, 2009年1月15日 浏览:9次 评论:0
  、       什么是全文检索和全文检索系统?

  全文检索是指计算机索引通过扫描文章中个词对每个词建立个索引指明该词在文章中出现次数和位置当用户查询时检索就根据事先建立索引进行查找并将查找结果反馈给用户检索方式这个过程类似于通过字典中检索字表查字过程

  全文检索思路方法主要分为按字检索和按词检索两种按字检索是指对于文章中个字都建立索引检索时将词分解为字组合对于各种区别语言而言字有区别含义比如英文中字和词实际上是合而中文中字和词有很大分别按词检索指对文章中即语义单位建立索引检索时按词检索并且可以处理同义项等英文等西方文字由于按照空白切分词因此实现上和按字处理类似添加同义处理也很容易中文等东方文字则需要切分字词以达到按词索引有关这方面问题是当前全文检索技术尤其是中文全文检索技术中难点在此不做详述

  全文检索系统是按照全文检索理论建立起来用于提供全文检索服务软件Software系统般来说全文检索需要具备建立索引和提供查询基本功能此外现代全文检索系统还需要具有方便用户接口、面向WWW[1]开发接口、 2次应用开发接口等等功能上全文检索系统核心具有建立索引、处理查询返回结果集、增加索引、优化索引结构等等功能外围则由各种区别应用具有功能组成结构上全文检索系统核心具有索引引擎、查询引擎、文本分析引擎、对外接口等等加上各种外围应用系统等等共同构成了全文检索系统图1.1展示了上述全文检索系统结构和功能



  在上图中我们看到:全文检索系统中最为关键部分是全文检索引擎各种应用都需要建立在这个引擎的上个全文检索应用优异程度根本上由全文检索引擎来决定因此提升全文检索引擎效率即是我们提升全文检索应用根本个方面个优异全文检索引擎在做到效率优化同时还需要具有开放体系结构以方便员对整个系统进行优化改造或者是添加原有系统没有功能比如在当今多语言处理环境下有时需要给全文检索系统添加处理某种语言或者文本格式功能比如在英文系统中添加中文处理功能在纯文本系统中添加XML[2]或者HTML[3]格式文本处理功能系统开放性和扩充性就十分重要

   2、       什么是Lucene?

  Lucene是apache软件Software基金会[4] jakarta项目组个子项目个开放源代码[5]全文检索引擎工具包即它不是个完整全文检索引擎而是个全文检索引擎架构提供了完整查询引擎和索引引擎部分文本分析引擎(英文和德文两种西方语言)Lucene是为软件Software开发人员提供个简单易用工具包以方便在目标系统中实现全文检索功能或者是以此为基础建立起完整全文检索引擎

  Lucene原作者是Doug Cutting他是位资深全文索引/检索专家曾经是V-Twin搜索引擎[6]主要开发者后在Excite[7]担任高级系统架构设计师目前从事于些Internet底层架构研究早先发布在作者自己http://www.lucene.com/后来发布在SourceForge[8]2001年年底成为apache软件Software基金会jakarta个子项目:http://jakarta.apache.org/lucene/

   3、       Lucene应用、特点及优势

  作为个开放源代码项目Lucene从问世的后引发了开放源代码社群巨大反响员们不仅使用它构建具体全文检索应用而且将的集成到各种系统软件Software中去以及构建Web应用甚至某些商业软件Software也采用了Lucene作为其内部全文检索子系统核心apache软件Software基金会网站WebSite使用了Lucene作为全文检索引擎IBM开源软件Softwareeclipse[9]2.1版本中也采用了Lucene作为帮助子系统全文索引引擎相应IBM商业软件SoftwareWeb Sphere[10]中也采用了LuceneLucene以其开放源代码特性、优异索引结构、良好系统架构获得了越来越多应用

  Lucene作为个全文检索引擎其具有如下突出优点:

  (1)索引文件格式独立于应用平台Lucene定义了套以8位字节为基础索引文件格式使得兼容系统或者区别平台应用能够共享建立索引文件

  (2)在传统全文检索引擎倒排索引基础上实现了分块索引能够针对新文件建立小文件索引提升索引速度然后通过和原有索引合并达到优化

  (3)优秀面向对象系统架构使得对于Lucene扩展学习难度降低方便扩充新功能

  (4)设计了独立于语言和文件格式文本分析接口索引器通过接受Token流完成索引文件创立用户扩展新语言和文件格式只需要实现文本分析接口

  (5)已经默认实现了套强大查询引擎用户无需自己编写代码即使系统可获得强大查询能力Lucene查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等

  面对已经存在商业全文检索引擎Lucene也具有相当优势首先开发源代码发行方式(遵守Apache Software License[12])在此基础上员不仅仅可以充分利用Lucene所提供强大功能而且可以深入细致学习到全文检索引擎制作技术和面相对象编程实战进而在此基础上根据应用实际情况编写出更好更适合当前应用全文检索引擎在这点上商业软件Software灵活性远远不及Lucene其次Lucene秉承了开放源代码架构优良优势设计了个合理而极具扩充能力面向对象架构员可以在Lucene基础上扩充各种功能比如扩充中文处理能力从文本扩充到HTML、PDF[13]等等文本格式处理编写这些扩展功能不仅仅不复杂而且由于Lucene恰当合理对系统设备做了抽象扩展功能也能轻易达到跨平台能力最后转移到apache软件Software基金会后借助于apache软件Software基金会网络平台员可以方便和开发者、其它员交流促成资源共享甚至直接获得已经编写完备扩充功能最后虽然Lucene使用Java语言写成但是开放源代码社区员正在不懈将的使用各种传统语言实现(例如.net framework[14])在遵守Lucene索引文件格式基础上使得Lucene能够运行在各种各样平台上系统管理员可以根据当前平台适合语言来合理选择



   4、       本文重点问题和cLucene项目

  作为中国人民大学信息学院99级本科生个毕业设计项目我们对Lucene进行了深入研究包括系统结构索引文件结构各个部分实现等等并且我们启动了cLucene项目做为个LuceneC语言重新实现以期望带来更快速度和更加广泛应用范围我们先分析了系统结构文件结构然后在研究各个部分具体实现同时开始进行cLucene实现限于时间限制到本文完成为止cLucene项目并没有完成对于Lucene具体实现部分也仅仅完成到了索引引擎部分

  接下来部分本文将对Lucene系统结构、文件结构、索引引擎部分做个彻底分析以期望提供对Lucene全文检索引擎系统架构和部分实现清晰了解cLucene项目则作为个开放源代码项目继续进行开发

  有关cLucene项目些信息:

  n     开发语言:ISO C[15]STLport 4.5.3[16]OpenTop 1.1[17]

  n     目标平台:Win32POSIX

  n     授权协议:GNU General Public License (GPL)[18]



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: