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 简介】 Lucene 是一个强大的开源全文搜索库,由 Java 编写,主要用于为应用程序添加全文检索功能。它不是一个完整的全文搜索引擎应用,而是一个工具包,允许开发者将其集成到自己的软件中,以实现高效、...
【Lucene搜索引擎简介】 Lucene是一个由Apache软件基金会Jakarta项目组开发的开源全文检索引擎工具包。它不是完整的全文检索引擎,而是提供了一个架构,包括完整的查询引擎和索引引擎,以及部分文本分析功能,主要...
**Lucene索引搜索简介** Lucene是Apache软件基金会下的一个开源全文搜索引擎库,它提供了高性能、可扩展的文本搜索功能。Lucene并不是一个完整的搜索引擎,而是一个工具集,允许开发人员在自己的应用程序中实现搜索...
lucene简介 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 2 lucene的工作方式 lucene...
一、Lucene简介 Lucene是Apache软件基金会的一个开放源代码项目,它提供了一个高性能、全文本搜索的API。Lucene支持索引和搜索文本,可以集成到各种Java应用程序中,帮助开发者轻松实现全文检索功能。其核心特性...
1. **Lucene简介** 2. **正则表达式(regex)在Lucene中的应用** 3. **regexQuery详解** 4. **示例代码解析** 5. **索引创建与查询流程** 6. **正则表达式的语法** #### Lucene简介 Lucene是一个高性能、全功能的全文...
Lucene作为一款高性能、全文检索引擎,被广泛应用于文本搜索场景。本文将详细介绍如何利用Lucene对XML文档进行索引建立的过程,并通过示例代码具体阐述其实现方法。 #### 二、基础知识 1. **Lucene简介** - Lucene...
**Lucene搜索引擎简介** Lucene是一个开源的全文检索引擎库,最初由Doug Cutting教授编写,以Java语言实现,主要用于提供文本数据的快速索引和检索功能。随着时间的推移,由于市场需求,Lucene已被移植到.NET、C++...
### Lucene基于Java的全文检索引擎简介 #### 一、Lucene概述与历史背景 Lucene是一个基于Java的全文检索引擎工具包,旨在为各种规模的应用程序提供强大的文本搜索功能。该工具包由Doug Cutting创建,他是全文检索...
使用其他编程语言访问Lucene Lucene管理和性能调优等内容 最后还提供了三大经典成功案例 为读者展示了一个奇妙的搜索世界 《Lucene实战 第2版 》适合于已具有一定Java编程基本的读者 以及希望能够把强大的搜索...
**一、Lucene简介** Lucene是Apache软件基金会下的Jakarta项目组的一个核心项目,它是一款高性能、可扩展的全文检索引擎库。作为一个开源的Java库,Lucene提供了完整的搜索功能,包括索引、查询、排序等。然而,值得...
1. **Lucene简介** Lucene是Java编写的一个开源全文检索库,由Doug Cutting创建。它提供了索引和搜索大量文本数据的能力,包括文档、网页和其他类型的数据。Lucene包含了分词器(Tokenizer)、分析器(Analyzer)和...
#### 一、Lucene简介 **Lucene** 是一个开源的信息检索库,它提供了一套高效且灵活的全文检索功能。Lucene 的目标是帮助开发者轻松地为应用程序添加索引和搜索功能。尽管 Lucene 本身并不是一个完整的搜索引擎(如 ...
Lucene简介** Lucene最初由Doug Cutting创建,现已成为Apache的顶级项目。它提供了一个高效、可扩展的信息检索库,支持索引和搜索大量文本数据。Lucene不仅处理文本,还可以处理其他类型的数据,如图片和视频,但...
#### 一、Lucene简介 Lucene是一款非常优秀且成熟的开源全文索引检索工具包,它完全采用Java语言编写,由Doug Cutting于1999年创建,并于2001年10月捐赠给了Apache基金会,成为Apache基金的一个子项目。Lucene不仅...
#### 一、Lucene简介 - **书籍概述**:“Lucene in Action”是一本深入介绍Apache Lucene的书籍,由Otis Gospodnetic和Erik Hatcher共同撰写。该书旨在帮助读者理解和掌握如何使用Java构建高效搜索应用程序的技术...
一、Lucene4.7简介 Lucene4.7是Apache Lucene项目的一个重要版本,它包含了对搜索性能的优化、新的分析器以及更强大的查询语法。此版本改进了倒排索引的存储效率,提高了搜索速度,并支持更多样化的查询表达式,使得...