`
baobeituping
  • 浏览: 1068610 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Lucene API详解

阅读更多
1.Lucene的Document
Document类似于数据库中的一条数据,Lucene是通过Document来跟各种物理文件或数据库文件通信的。
2.Lucene的Field
Field相当于数据库中一条数据的某个字段,我们可以直接通过FIELD创建一个该类型的对象。
他们直接的调用关系:
Document doc = new Document();

Field f1 = new Field("name1","value1",Field.Store.YES,Field.Index.TOKENIZED);
doc.add(f1);

Field的各个属性:
Store.NO:表示Field不需要存储。
Store.YES:表示Field需要存储。
Store.COMPRESS:表示以压缩的方式来保存field的值。
Index有4个静态属性:
1.Index.NO:表示该Field不需要索引,也就是用户不需要去查找改field的值。
2.Index.TOKENIZED:表示该Field先被分词再索引。
3.Index.UN_TOKENIZED:表示不对该field进行分词,但要对他进行索引,也就是该field会被用户查找。
4.Index.NO_NORMS:表示对该FIELD进行索引,但是不使用analyzer,同时禁止他参加评分,主要是为了减少内存的消耗。


用户构建完document.那么就要开始建立索引了。采用indexwriter.
例如:
Analyzer luceneAnalyzer = new StandardAnalyzer();
IndexWriter writer = new IndexWriter(file,luceneAnalyzer,true);

他有三个构造函数:
public IndexWriter(String path,Analyzer a,boolean create)
public IndexWriter(File path,Analyzer a,boolean create)
public IndexWriter(Directory path,Analyzer a,boolean create)
这三个构造函数除了第一个参数不一样以后,其他都一样,表示索引的位置。第二个参数是一个ANALYZER对象,主要负责对各种输入数据源进行分析,包括过滤,分词等多种功能。第三个参数是一个BOOLEAN值,含义是:在由第一个参数所指定的路径处,删除原目录的所有内容重新构建索引,或是在其中已经存在的索引上追加新的DOCUMENT.

IndexWriter构建索引的流程:
1.初始化一个分析器对象,作为参数传入到writer中
2.传入建立索引的路径,即用户希望将索引文件存放的地方。
3.为该目录上锁。
4.判断用户希望把该索引目录下的原来的内容删去吗?
如果是:创建新的SEGMENT文件,并写入版本号,修改次数等信息。
如果否:读取原来的SEGMENT文件,读出版本号信息。
5.对象初始化完毕,通过writer.addDocument(doc);开始往指定目录写索引。

注意点:
1.在使用addDocument方法以后,一定要使用IndexWriter的CLOSE方法来关闭索引器,使所有的IO缓存中的数据都写入到磁盘中,关闭各种流。这样才能最终完成索引的创建。
2.限制每个FIELD中的词条数量。
对于建立的索引,有可能将很长的文本段都写入到FIELD中,然后作为索引进行存储,如果存入数据量过大,会抛出OUTOFMEMORY的异常。因此可以调用
public void setMaxFieldLength(int maxFieldLength)
例子:
writer.addDocument(doc);
writer.setMaxFieldLength(100000);
writer.addDocument(doc2);
当调用了该方法以后,LUCENE最多可以为FIELD内的10000个词条建立索引(如果不设置,默认为10000个。)
分享到:
评论

相关推荐

    lucene-api.rar_lucene

    **Lucene API详解** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个高级的、可扩展的搜索程序开发框架,让开发者能够轻松地在应用程序中实现...

    lucene_api

    **Lucene API详解** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中最广泛使用的搜索引擎库。它提供了强大的文本分析、索引和搜索功能,被广泛应用于各种需要全文检索的场景,如...

    Lucene6.6.2API示例

    二、Lucene 6.6.2 API详解 1. 文档(Document):Lucene中的基本单元,用于存储单个文档的信息,如字段(Field)等。 2. 字段(Field):文档的组成部分,具有名称和值,可以设置为可搜索、可存储或可索引。 3. 索引...

    Lucene in Action, Second Edition

    4. **Lucene API详解** 5. **Lucene在信息检索中的作用** 6. **Lucene的定制与扩展** 7. **Lucene的性能优化** 8. **Lucene的社区支持** #### 知识点详细解释 **1. Lucene简介与背景** _Lucene in Action, Second...

    lucene API文档

    **Lucene API 文档详解** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发,被广泛应用于各种搜索引擎的构建。在Java编程语言中,Lucene 提供了丰富的API来处理索引、搜索、分析文本等任务。这份文档...

    lucene-1.9.1.zip

    三、Lucene API详解 Lucene的API设计简洁易用,主要分为以下几个部分: 1. **IndexWriter**:负责创建和更新索引,包括添加、删除和更新文档。 2. **IndexReader**:用于读取索引,提供搜索前的准备操作。 3. **...

    全文检索(Lucene)详解

    **全文检索(Lucene)详解** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发并维护。它提供了一个简单但功能强大的API,用于在各种数据源中进行高效的全文检索。Lucene不仅用于网站搜索引擎,还广泛...

    lucene4.10.3的api的chm合集

    《Lucene 4.10.3 API CHM合集详解》 Apache Lucene是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发。这里的"lucene4.10.3的api的chm合集"是针对该版本的一个API文档集合,包含了多个模块的CHM...

    Manning.Lucene.in.Action.2nd.Edition.Jun.2010.正式版.2 edition (July 28, 2010)

    - **Lucene API详解**:详细介绍了Lucene的核心API,包括文档对象、字段、索引器、搜索器等,并提供了大量实用的代码示例。 - **高级主题**:讨论了更高级的主题,如分布式搜索、高性能优化技巧、近实时搜索等。 - *...

    lucene核心资源包以及lucene的api

    **Lucene核心资源包与API详解** Lucene是一款开源全文搜索引擎库,由Apache软件基金会开发并维护。它为Java开发者提供了强大的文本搜索功能,被广泛应用于各种信息检索系统。本资源包包含了Lucene的核心资源及API,...

    lucene 3.0 API 中文帮助文档

    **Lucene 3.0 API 中文帮助文档详解** Lucene 是一个开源的全文检索库,由Apache软件基金会开发并维护。它提供了高级的文本搜索功能,被广泛应用于各种信息检索系统。本篇将深入探讨Lucene 3.0 API的中文帮助文档,...

    lucene详解.doc

    2. **灵活性**:Lucene 的 API 设计允许开发者轻松地将各种数据源(如文件或数据库记录)映射到其索引结构中。 3. **可扩展性**:Lucene 提供了对查询分析器、排序和应用接口的自定义,以适应不同的需求。 4. **语言...

    Lucene 常用功能介绍视频详解

    它提供了一个简单但功能强大的API,用于在各种应用中实现全文索引和搜索。以下是对Lucene常用功能的详细介绍: 1. **创建索引** 创建索引是Lucene工作的第一步。通过`Directory`接口,如`FSDirectory`,Lucene可以...

    详解SpringBoot+Lucene案例介绍

    SpringBoot与Lucene集成案例详解 本文将详细介绍如何将SpringBoot与Lucene集成,以实现站内搜索系统。 Lucene是一个高性能的全文检索引擎,它可以帮助我们快速地检索大量的文本数据。 一、案例介绍 在本案例中,...

    lucene3.0英文API

    **Lucene 3.0英文API详解** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护。它提供了一个简单且可扩展的接口,用于在各种应用程序中实现搜索功能。Lucene 3.0是该库的一个重要版本,引入了许多...

    lucene2.9.0 API

    ### 二、API详解 1. **Analyzer**: 这是文本分析的接口,定义了如何将输入文本拆分为令牌(Tokens)。Lucene 2.9.0 包含了多种预定义的分析器,如 `StandardAnalyzer`(适用于英语)和 `ChineseAnalyzer`(适用于...

    Lucene分词与查询详解

    **Lucene分词与查询详解** Lucene是一个高性能、全文本搜索库,广泛应用于各种搜索引擎的开发中。它提供了一套强大的API,用于索引文本数据,并执行复杂的查询操作。在深入理解Lucene的分词与查询机制之前,我们...

    Notes-of-Lucene

    1. **Lucene API详解**:笔记可能会涵盖如何创建、更新和删除索引,以及如何构造和执行查询。 2. **Analyzer的使用**:包括标准分词器(StandardAnalyzer)、中文分词器(SmartChineseAnalyzer)和其他自定义分词器...

    lucene5.X与lucene3.60的版本差异

    《Lucene 5.x与3.6.0版本差异详解》 Lucene作为一个强大的全文搜索引擎库,其每个版本的更新都带来了一系列的变化和优化。本文将深入探讨Lucene 5.x与Lucene 3.6.0之间的主要差异,帮助开发者理解新版本的功能改进...

Global site tag (gtag.js) - Google Analytics