`
北风norther
  • 浏览: 14110 次
  • 性别: Icon_minigender_1
  • 来自: 邯郸
社区版块
存档分类
最新评论

Lucene基本API组件的理解

 
阅读更多

本篇转自http://qindongliang.iteye.com/blog/1921685转载时请注明出处!

 

 

前面几篇笔者已经把Lucene的最基本的入门,介绍完了,本篇就对Lucene基本的知识做一个总结,以便于加深对Lucene基本API组件的理解。 

为了方便对比学习,下面给出表格数据 

索引期间使用的API组件 检索期间使用的API组件
IndexWriter IndexReader
IndexWriterConfig IndexSearcher
Directory Directory
Analyzer QueryParser或者Query子类
Document TopDocs
Field ScoreDoc--Term      




下面笔者就对上图组件一一剖析下 

首页要介绍的就索引期间的各个类 
1,IndexWriter是索引过程中的核心类,主要负责创建索引或者打开已有索引,提供对索引的 
添加,删除,修改等操作 
2,IndexWriterConfig这个API在低版本的Lucene中是没有此配置类的,这个类也比较重要,使用此类则需要在其构造方法中传入2个参数,第一个参数是Lucene当前的版本号,第二个是索引是使用的分词器,除了这个我们最常用的功能,里面还提供了大量工具方法,例如,设置内存里缓冲大小,设置文档数据批量提交时大小,获取线程状态,设置创建模式,以及是否开启复合索引的等等一系列,可以对索引做一些基本的配置优化等信息。 
3,Directory这个类代表了Lucene索引的存放位置,是一个抽象类,它有一系列子类可以用来处理索引,使用不同的子类对于系统的性能,影响会很大,但归其本质上,提升性能,无非就拿空间换时间或拿时间或空间2中情况,在具体使用时,我们可以使用其子类来获取索引所在的存储路径,然后将其传给IndexWriter类构造方法里。 
4,Analyzer这个类也是所有分析器的基类,文本文件在索引前,需要经过分析器处理,处理成对应的语汇单元,统一格式,它能提取有效的信息,过滤掉一些禁用词,Lucene自带有几个分析器,但大部分都是对英文或欧洲语言处理的,如果想要使用中文的分词器,可以使用其自带的SmartCN分词器,也可以用开源的IK,messeg4j等等,选择什么样的分析器是索引过程中很重要的一步,这个关键还得看自己的业务需求定。 
5,Document代表一个文档的意思,类似于数据库的一行记录,我们可以向文档中,添加自己想要的域字段,然后在把一个个文档索引起来,提供检索。 
6,Field就是文档中存储的域,每一个域都有一个域名和域值,这就类似数据库的字段名跟值一样,我们可以使用Field来精确控制各个域的值,最常用的有2个Field,一个是不提供分词的StringField和另外一个分词的TextFiled,当然还有其他的一些Field,在这里就不多介绍了。 
7,IndexReader这个类用来获取Directory的子类打开的索引文件流,然后在将进IndexSearcher的构造方法里,进行查询组件的初始化操作,这个类再低版本的的Lucene里也是不存在的,在后来新的版本里才添加的类。 
8,IndexSearcher这个类是程序搜索期间的核心类,是连接索引的桥梁,它是以只读的方式打开索引,提供了大量检索,排序,过滤的等等以及其他的一些功能。 
9,QueryParser或Query都可以完成一些检索功能,不同的是QueryParser提供的功能更为强大,方便自定义开发一些检索方案,而Query及其麾下的一系列子类是Lucene中自带的一些API,使用这些API,大部分情况下都可以完成一些基本的检索,如果需要定制化自己的检索方案则需要使用QueryParser,大多数情况下,我们最常使用的是Query下面的TermQuery子类,当然还有其他大量的特定功能的Query子类存在。 
10,TopDocs这个类是一个简单的容器指针,它一般会记录前N个检索的结果,在TopDocs中,它只会存储这个文档的docid以及获取的得分情况,另外这前N个结果,默认的排序方式,是按照得分的大小排列的。 
11,ScoreDoc类通常我们使用的是一个数组,它里面也只会包含这个文档的docid以及获取的得分情况,与TopDocs不同的是,我们可以使用这个类,来进行类似数据库的分页操作,当然你得保证你有足够的内存,如果是海量数据的分页,这个操作很容易造成内存溢出,这时候我们就需要考虑其他方法了。 
12,Term类是搜索功能最基本的单元,与Field类似,检索的时候需要传入域名及检索的字符串,是一个小而不可或缺的精简类。 



至此,笔者已经对Lucene的基本的常用的几个类简单的剖析了一下,可能大多数情况下,我们知道他们怎么用,但是就是不太了解他们的基本概念。笔者觉得,如果真正的理解了这些东西,就可以在开发中或给同事的一些交流中带来极大的方便。

分享到:
评论

相关推荐

    lucene4.10.3的api的chm合集

    尽管这个合集不包含“fact”的API,但其他关键模块的详细信息足以帮助开发者深入理解Lucene 4.10.3的功能和用法。 首先,`lucene-core-4.10.3.CHM`是核心模块,包含了Lucene的基本功能,如索引和查询。这个API文档...

    Lucene3.0.1 官方api

    在Lucene 3.0.1中,官方API(应用程序编程接口)是开发者理解和使用Lucene的核心工具。API文档详细地阐述了各种类、方法和接口,帮助开发者构建自己的搜索引擎应用。以下是一些关键的知识点: 1. **索引过程**:...

    lucene 3.0 API 中文帮助文档

    本篇将深入探讨Lucene 3.0 API的中文帮助文档,帮助开发者更好地理解和使用这个强大的搜索引擎。 首先,Lucene 3.0 API是Lucene的一个重要版本,它包含了丰富的类和接口,用于索引、查询和管理文本数据。这个版本的...

    lucene API文档

    这份文档主要针对的是 Lucene 2.1 版本,虽然版本较旧,但其核心概念和基础API仍然是理解Lucene后续版本的关键。 一、Lucene 的核心组件 1. **Analyzer**: 分析器是Lucene处理文本的核心组件,负责将输入的原始...

    lucene+api搜索引擎引工具源码

    在"lucene+api搜索引擎引工具源码"项目中,开发者可能已经封装了 Lucene 的核心功能,使其更易于在 C#.NET 平台上使用。源码可能会包含以下关键组件和概念: 1. **索引创建**:Lucene 允许开发者将文本数据(如文档...

    lucene api

    Lucene API,全称为Apache Lucene,是一个高性能、全文检索库,由Java编写。它是开源软件项目,广泛应用于构建搜索引擎和其他需要高效文本分析和检索的应用程序。Lucene API提供了一整套工具和算法,用于索引、搜索...

    lucene2.3API中文文档、lucene-3.5.0JAR包

    首先,`lucene2.3API中文文档.chm`是针对Lucene 2.3版本的中文API文档,这为中文开发者提供了便利,帮助他们理解并使用这个版本的Lucene。在文档中,你可以找到关于Lucene核心组件的详细信息,如Analyzer(分析器)...

    lucene核心资源包以及lucene的api

    **Lucene核心资源包与API详解** ...同时,CHM文档可以帮助开发者深入理解各个API的用法,解决开发过程中遇到的问题。通过不断实践和查阅文档,可以熟练掌握Lucene,从而构建出高效、精准的全文检索系统。

    Lucene组件

    6. **QueryParser**: 查询解析器将用户的自然语言查询转换为Lucene理解的查询语法,支持多种查询构造方式,如布尔运算符、短语查询等。 7. **ScoreDoc**: 当搜索器返回结果时,ScoreDoc对象包含了每个匹配文档的...

    Lucene 3.5 api HTML版

    **Lucene 3.5 API 概述** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了高级文本检索功能,广泛用于构建搜索引擎和其他需要高效全文检索能力的应用。Lucene 3.5 API 是该库在2011年发布...

    lucene2.4.1 API手册

    Lucene 2.4.1 版本是该库的一个历史版本,虽然现在已经有了更现代的版本,但了解它的API对于理解Lucene的核心概念和工作原理仍然很有价值。 **核心组件与概念** 1. **索引(Index)**:在Lucene中,索引是文档的...

    lucene_3.6.1_API

    《深入理解Lucene 3.6.1 API》 Lucene是Apache软件基金会的一个开源项目,它是一个全文搜索引擎库,提供了高性能、可扩展的信息检索服务。Lucene 3.6.1是其历史版本之一,虽然现在有更新的版本,但3.6.1仍具有重要...

    Lucene3.3_API文档

    本篇将详细解析Lucene 3.3 API,帮助开发者深入理解并有效地利用这个强大的搜索引擎库。 ### 1. Lucene的核心组件 Lucene的核心组件包括索引(Indexing)、查询(Querying)和搜索(Searching)等部分。 - **索引...

    Lucene-3.0.2 API 下载

    在使用Lucene 3.0.2 API时,开发者需要理解这些核心组件的交互方式,并根据实际需求选择合适的配置。此外,为了优化性能,可以考虑使用多线程索引、分块索引、倒排索引合并策略等技术。 总的来说,Lucene 3.0.2 API...

    lucene2.9.0 API

    **Lucene 2.9.0 API 深度解析** Lucene 是一个开源的全文检索库,由 Apache 软件基金会维护。它提供了一个高效、可扩展的信息检索库,使得开发者能够...理解并熟练运用这些API,开发者可以构建出高效的全文搜索引擎。

    lucene 2.9 api

    《深入理解Lucene 2.9 API:全方位剖析与应用》 Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护。它为开发者提供了一个简单可扩展的接口,用于在各种数据存储中实现全文索引和搜索功能。本文将深入...

    lucene2.3.2api

    尽管现在已经有了更新的版本,但了解其基本工作原理和API使用方法,对于理解后续版本的演变及全文检索技术的底层机制仍然大有裨益。在实际项目中,开发者可以根据需求选择合适的Analyzer,利用QueryParser构建复杂的...

    Lucene.Net.rar 2.0 ver asp.net 组件

    **Lucene.Net 2.0 for ASP.NET组件详解** Lucene.Net是一款开源全文搜索引擎库,是Apache软件基金会Lucene...通过深入理解和熟练使用这个组件,开发者可以提升其应用程序的用户体验,提供更智能、更快速的搜索功能。

    lucene3.0英文API

    **二、Lucene 3.0 API组件** 1. **Analyzer**:Analyzer类是处理文本分析的核心,如`StandardAnalyzer`用于处理标准的英语文本,`SimpleAnalyzer`则采用简单的分词策略。 2. **IndexWriter**:用于创建和更新索引...

    Lucene 3.0.3 API

    9. **文档与示例**:Lucene 3.0.3 提供了丰富的文档和示例代码,帮助开发者理解并掌握如何使用其核心功能,如创建索引、执行查询、处理结果等。 10. **社区支持**:Apache Lucene 有着活跃的社区,不断推动其发展。...

Global site tag (gtag.js) - Google Analytics