`
zone8089653
  • 浏览: 12227 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

lucene初探一

阅读更多

一、简介

Lucene是一个基于Java的全文索引工具包。最新版本3.4

 Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。

Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。

Lucene的发展历程:早先发布在作者自己的www.lucene.com,后来发布在SourceForge,2001年年底成为APACHE基金会jakarta的一个子项目:http://jakarta.apache.org/lucene/

已经有很多Java项目都使用了Lucene作为其后台的全文索引引擎,比较著名的有:

  • Jive:WEB论坛系统;
  • Eyebrows:邮件列表HTML归档/浏览/查询系统,本文的主要参考文档“TheLucene search engine: Powerful, flexible, and free”作者就是EyeBrows系统的主要开发者之一,而EyeBrows已经成为目前APACHE项目的主要邮件列表归档系统。
  • Cocoon:基于XML的web发布框架,全文检索部分使用了Lucene
  • Eclipse:基于Java的开放开发平台,帮助部分的全文索引使用了Lucene

对于中文用户来说,最关心的问题是其是否支持中文的全文检索。但通过后面对于Lucene的结构的介绍,你会了解到由于Lucene良好架构设计,对中文的支持只需对其语言词法分析接口进行扩展就能实现对中文检索的支持。

 

Lucene的相关项目有Hadoop(云计算),NUTCH等

 

目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能。Lucene 能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的,Lucene 就能对你的文档进行索引和搜索。比如你要对一些 HTML 文档,PDF 文档进行索引的话你就首先需要把 HTML 文档和 PDF 文档转化成文本格式的,然后将转化后的内容交给 Lucene 进行索引,然后把创建好的索引文件保存到磁盘或者内存中,最后根据用户输入的查询条件在索引文件上进行查询。不指定要索引的文档的格式也使 Lucene 能够几乎适用于所有的搜索应用程序。

 

 

二、初识

Lucene 软件包的发布形式是一个 JAR 文件,下面我们分析一下这个 JAR 文件里面的主要的 JAVA 包,使读者对之有个初步的了解。

Package: org.apache.lucene.document

这个包提供了一些为封装要索引的文档所需要的类,比如 Document, Field。这样,每一个文档最终被封装成了一个 Document 对象。

Package: org.apache.lucene.analysis

这个包主要功能是对文档进行分词,因为文档在建立索引之前必须要进行分词,所以这个包的作用可以看成是为建立索引做准备工作。

Package: org.apache.lucene.index

这个包提供了一些类来协助创建索引以及对创建好的索引进行更新。这里面有两个基础的类:IndexWriter 和 IndexReader,其中 IndexWriter 是用来创建索引并添加文档到索引中的,IndexReader 是用来删除索引中的文档的。

Package: org.apache.lucene.search

这个包提供了对在建立好的索引上进行搜索所需要的类。比如 IndexSearcher 和 Hits, IndexSearcher 定义了在指定的索引上进行搜索的方法,Hits 用来保存搜索得到的结果

 

三、主要类

为了对文档进行索引,Lucene 提供了五个基础的类,他们分别是 Document, Field, IndexWriter, Analyzer, Directory。下面我们分别介绍一下这五个类的用途:

Document

Document 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。一个 Document 对象由多个 Field 对象组成的。可以把一个 Document 对象想象成数据库中的一个记录,而每个 Field 对象就是记录的一个字段。

Field

Field 对象是用来描述一个文档的某个属性的,比如一封电子邮件的标题和内容可以用两个 Field 对象分别描述。

Analyzer

在一个文档被索引之前,首先需要对文档内容进行分词处理,这部分工作就是由 Analyzer 来做的。Analyzer 类是一个抽象类,它有多个实现。针对不同的语言和应用需要选择适合的 Analyzer。Analyzer 把分词后的内容交给 IndexWriter 来建立索引。

IndexWriter

IndexWriter 是 Lucene 用来创建索引的一个核心的类,他的作用是把一个个的 Document 对象加到索引中来。

Directory

这个类代表了 Lucene 的索引的存储的位置,这是一个抽象类,它目前有两个实现,第一个是 FSDirectory,它表示一个存储在文件系统中的索引的位置。第二个是 RAMDirectory,它表示一个存储在内存当中的索引的位置。

熟悉了建立索引所需要的这些类后,我们就开始对某个目录下面的文本文件建立索引了,清单 1 给出了对某个目录下的文本文件建立索引的源代码。

 

 

待续。。。。

 

 

 

分享到:
评论

相关推荐

    Lucene初探,一个初级的LuceneDemo

    **Lucene初探:一个初级的LuceneDemo** 在IT领域,搜索引擎技术是不可或缺的一部分,尤其是在大数据时代,高效的信息检索显得尤为重要。Apache Lucene就是这样一款强大的开源全文搜索引擎库,它为开发者提供了构建...

    lucene 搜索引擎小例子

    **Lucene 实例初探** 在压缩包中的 "lucene实例-包括jar包" 文件,通常包含 Lucene 库的 JAR 包和其他可能需要的依赖。要运行 Lucene 示例,你需要: 1. **导入 JAR 包**:将提供的 JAR 文件添加到你的项目类路径...

    lucene4.4使用手册.docx

    4. **Lucene程序初探** 在Java项目中使用Lucene,需要创建索引并编写简单的搜索程序。创建索引涉及对文档内容的分析,而搜索则包括了使用Term查询、多字段QueryParser查询以及分页查询。 5. **Lucene的增删改查...

    CSDN大数据学习班第一节分享:大数据入门技术初探

    ### CSDN大数据学习班第一节分享:大数据入门技术初探 #### 大数据技术概览 随着信息技术的飞速发展,大数据技术已经成为支撑现代信息化社会的重要基石之一。本篇文章将根据给定的内容,深入探讨大数据的基本概念...

    JavaSearchEngine-java.rar_java 搜索引擎

    在“手把手教你全文检索”Apache Lucene初探这篇文章中,xingoo博主深入浅出地介绍了如何使用Lucene进行文本检索,包括安装、创建索引、执行查询等步骤,是初学者入门的良好教程。 搜索引擎的研究与实现(Java)通常...

    爬虫技术初探

    它的优点包括基于Lucene的高效索引和检索功能、支持分布式处理以及与Hadoop的紧密集成,但相比其他单机类爬虫技术,Nutch的社区活跃度更高。 Nutch爬虫的命令行操作包括设置种子目录、抓取任务ID、Solr服务地址以及...

    hadoop开发者文档

    5、Java RMI + Lucene 构建分布式检索应用初探 ................ - 17 - 6、一对多的表关联在mapreduce中的应用(续) .................. - 26 - 7、InputSplit文件格式分析................................. - 32 -...

    Jediael_v0.01

    《Jediael_v0.01:初探Java搜索引擎的基石》 Jediael_v0.01,作为一款搜索引擎的早期版本,是Java技术在信息检索领域的实践应用。Java,作为一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库,...

    大数据技术 Hadoop开发者第二期 MapReduce HDFS Hive Mahout HBase 共64页.pdf

    #### 五、Java RMI + Lucene 构建分布式检索应用初探 - **技术组合**:结合 Java Remote Method Invocation (RMI) 和 Lucene 实现分布式检索应用。 - **关键技术点**: - Java RMI 的使用,实现远程方法调用功能。...

    高性能高并发服务器架构大全

    1、一台服务器 71 2、两台服务器 72 3、四台服务器 73 4、五台服务器 73 5、更多服务器 74 6、现在我们在哪里: 75 7、现在我们在哪里 78 8、现在我们在哪里 79 9、缓存 80 10、Web访问负载均衡 80 11、...

Global site tag (gtag.js) - Google Analytics