`
fantaxy025025
  • 浏览: 1248071 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Lucene(一)简介

阅读更多

 

Lucene介绍


** 1,Lucene是什么呢?

lucene是众多搜索引擎中的一个,就像持久层除了Hibernate外也有很多其它框架一样。
lucene不是和baidu和google一样。Lucene是一个软件库,一个开发工具包,而不是一个具有完整特征的搜索应用程序。它本身只关注文本的索引和搜索 。Lucene使你可以为你的应用程序添加索引和搜索能力。

 

** 2,谁在用Lucene呢?

目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能。还有其他很多的网站的应用程序使用了Lucene(再举几个例子)。

 

** 3,Lucene提供的搜索跟数据库的搜索比怎么样?

数据库是使用like进行匹配,整度慢,而Lucene的搜索是很快的(毫秒级)...
索引是现代搜索引擎的核心,建立索引的过程就是把源数据处理成非常方便查询的索引文件的过程。为什么索引这么重要呢,试想你现在要在大量的文档中搜索含有某个关键词的文档,那么如果不建立索引的话你就需要把这些文档顺序的读入内存,然后检查这个文章中是不是含有要查找的关键词,这样的话就会耗费非常多的时间,想想搜索引擎可是在毫秒级的时间内查找出要搜索的结果的。这就是由于建立了索引的原因,你可以把索引想象成这样一种数据结构,他能够使你快速的随机访问存储在索引中的关键词,进而找到该关键词所关联的文档。


** 4,Lucene会什么搜索的这么快呢,其原理是什么?

Lucene 采用的是一种称为反向索引 (inverted index)的机制。反向索引就是说我们维护了一个词/短语表,对于这个表中的每个词/短语,都有一个链表描述了有哪些文档包含了这个词/短语。这样在用户输入查询条件的时候,就能非常快的得到搜索结果。
所以要先建立索引才能进行搜索。
文档建立好索引后,就可以在这些索引上面进行搜索了。搜索引擎首先会对搜索的关键词进行解析,然后再在建立好的索引上面进行查找,最终返回和用户输入的关键词相关联的文档。


** 5,Lucene 能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化成文本的,Lucene 就能对你的文档进行索引和搜索。
比如你要对一些 HTML 或 PDF 文档进行索引,你就首先需要把他们转化成文本格式的,然后将转化后的内容交给 Lucene 进行索引。最后根据用户输入的查询条件在索引文件上进行查询。
不指定要索引的文档的格式也使 Lucene 能够几乎适用于所有的搜索应用程序。

 

 

** 特点和优势

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

  Lucene是一个高性能、可伸缩的信息搜索(IR)库。它使你可以为你的应用程序添加索引和 搜索能力。Lucene是用java实现的成熟的、免费的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于在Apache软件许可 [ASF, License]。同样,Lucene是当前与近几年内非常流行的免费的Java信息搜索(IR)库。

 

** 突出的优点

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

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

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

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

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

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

 

面对已经存在的商业全文检索引擎,Lucene也具有相当的优势。   

    首先,它的开发源代码发行方式(遵守Apache Software License[12]),在此基础上程序员不仅仅可以充分的利用Lucene所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面相对 象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。在这一点上,商业软件的灵活性远远不及Lucene。       其次,Lucene秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面 向对象架构,程序员可以在Lucene的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTML、PDF[13]等等文本格式的处理,编写这些 扩展的功能不仅仅不复杂,而且由于Lucene恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。   

    最后,转移到apache软件基金会后,借助于apache软件基金会的网络平台,程序员可以 方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。最后,虽然Lucene使用Java语言写成,但是开放源代码社 区的程序员正在不懈的将之使用各种传统语言实现(例如.net framework[14]),在遵守Lucene索引文件格式的基础上,使得Lucene能够运行在各种各样的平台上,系统管理员可以根据当前的平台适 合的语言来合理的选择。

 

参考:

http://baike.baidu.com/view/371811.htm (图片不错)

 

o

o

o

 

o

o

o

 

 

 

分享到:
评论

相关推荐

    Lucene全文检索引擎简介

    建立一个高效检索系统的关键是建立一个类似于科技索引一样的反向索引机制,将数据源(比如多篇文章)排序顺序存储的同时,有另外一个排好序的关键词列表,用于存储关键词==>文章映射关系,利用这样的映射关系索引:...

    java Lucene初级教程

    lucene简介 1.1 什么是lucene  Lucene是一个全文搜索框架,而不是应用产品。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 2 lucene的工作方式  lucene...

    Lucene in Action 中文版

    使用其他编程语言访问Lucene Lucene管理和性能调优等内容 最后还提供了三大经典成功案例 为读者展示了一个奇妙的搜索世界  《Lucene实战 第2版 》适合于已具有一定Java编程基本的读者 以及希望能够把强大的搜索...

    Lucene引擎简介

    Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。 Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索...

    Lucene:基于Java的全文检索引擎简介

    Lucene是一个基于Java的全文索引工具包。 1. 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史 2. 全文检索的实现:Luene全文索引和数据库索引的比较 3. 中文切分词机制简介:基于词库和自动切分词算法的...

    LuceneInAction(第2版)_cn.pdf

    包括认识Lucene、建立索引、为应用程序添加搜索功能、高级搜索技术、扩展搜索、使用Tika提取文本、Lucene的高级扩展、使用其他编程语言访问Lucene、Lucene管理和性能调优等内容,最后还提供了三大经典成功案例,为...

    搜索引擎Lucene 简介.doc

    在一定深度上介绍LUCENE,原先是给公司员工的培训材料,想必大家也需要,因此发到网上,希望能对LUCENE有进一步了解。

    Lucene 是一个基于 Java 的全文信息检索工具包,

    Lucene 简介 Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 ...

    Lucene介绍,全文检索

    Lucene是一个基于Java的全文索引工具包。 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史 全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基于词库和自动切分词算法的比较 具体...

    Lucene索引搜索简介以及入门实例源码.rar

    这是一个朋友的学习成果,传到网上,大家分享,方便自己,方便别人. 作者:xiexie

    Lucene.Net2.3.1开发介绍 分词(二)

    这个文档对lucene进行了介绍并且进行深入的使用,文档分开发了,网络太慢了。。。

    开源搜索框架lucene介绍

    Lucene是非常优秀的成熟的开源的免费的纯java语言的全文索引检索工具包。 2001年10月贡献给APACHE,成为APACHE基金的一个子项目。 开源,可扩展能力强,有各种语言版本,适合各种平台,

    开放源代码的全文检索引擎Lucene

    第一节 全文检索系统与Lucene简介··· 3 一、 什么是全文检索与全文检索系统?··· 3 二、 什么是Lucene?··· 4 三、 Lucene的应用、特点及优势··· 4 四、 本文的重点问题与cLucene项目··· 5 第二...

    完整的站内搜索引擎(Lucene.Net+盘古分词)

    分词(lucene.Net提供StandardAnalyzer一元分词,按照单个字进行分词,一个汉字一个词) 盘古分词 基于词库的分词,可以维护词库 首先我们新增的SearchHelper类需要将其做成一个单例,使用单例是因为:有许多地方需要...

    全文索引检索工具Lucene 简介,原来和应用实例

    Lucene是一个高性能、可伸缩的信息搜索(IR)库。 Information Retrieval (IR) library.它使你可以为你的应用程序添加索引和搜索能力。 Lucene的作者Doug Cutting是资深的全文索引/检索专家,最开始发布在他本人的主页...

    Lucene in Action

     本书深入浅出地介绍了Lucene——一个开源的使用Java语言编写的全文搜索引擎开发包。它通过浅显的语言、大量的图注、丰富的代码示例,以及清晰的结构为读者呈现出作为优秀开源项目的Lucene所体现的强大功能。全书共...

    基于lucene的搜索引擎总结

    Lucene简介 高性能、可扩展的信息检索工具库 为应用程序添加索引/搜索功能 一个典型的应用: 全文索引/搜索 全文索引/搜索 Lucene索引过程的核心类 IndexWriter :提供对索引的写入操作 Directory:描述了索引存放的...

    集成Lucene和HBase

    Lucene简介Lucene中可搜索的实体都表现为文档(document),它由字段(field)和值(value)组成。每个字段值都由一个或多个可搜索的元素——即词汇(term)——组成。Lucene搜索基于反向索引,其中包含了关于可搜索...

Global site tag (gtag.js) - Google Analytics