`

Lucene学习(二)之索引的合并

阅读更多

名词解释:

Document:逻辑文件,Lucene只能识别并处理该类型的文件。

Field:用来标识当前的数据源的各种属性。它所具有的存储特性包括Store、Index

Store包括三个常量:COMPASS(Field被压缩存储),YES(Field被存储),NO(Field不被存储)

Index包括四个常量:NO(Field不索引),TOKENIZED(Field被分词后索引),UN_TOKENIZED(Field不分词索引),NO_NORMS(不实用Analyzer来索引Field)

IndexWriter:创建索引,合并各种索引段,以及控制与索引相关的各方面。

倒排:一种面向单词的索引机制,通常是由词(关键字)和出现情况两部分组成。对于索引中的每个词(关键字),都跟随一个列表(位置表),用来记录单词在所有文档中出现的位置。

mergeFactor:决定segment该如何被addDocument()方法进行合并。当取比较小的值时,索引时所使用的内存较少,而且搜索未优化的索引的速度会很快,但是索引建立的速度会比较慢。当取较大值时,建立索引时需要使用更多的内存,并且查找未优化的索引时速度会慢些,不过索引建立时的速度会比较快,因此,取值较大适合批量的索引建立,取值较小适合间歇性的向索引添加文档。

maxMergeDocs:限制segment的文档数量。

minMergeDocs(maxBufferedDocs):限制内存中的文档数量。

IndexWriter中的optimize()用来优化segment,将所有的segment合并为一个完整的segment。

 

索引的合并与索引的优化:

在创建索引的过程中,IndexWriter的构造函数如下:

public IndexWriter(Directory d, Analyzer a, boolean create);

其中Directory是抽象类型,包含两个子类,分别为RAMDirectory和FSDirectory。

合并的具体示例如下:

/*
 * 合并索引
 */
public class UniteIndex {
	
	public void uniteTest() throws Exception {
		// 初始化一个RAMDirectory对象
		RAMDirectory ram = new RAMDirectory();
		// 初始化一个FSDirectory对象
		FSDirectory fs = FSDirectory.getDirectory("d:\\uniteindex", true);
		// 构建一个索引器,并以文件系统的目录作为其目标路径
		IndexWriter fsWriter = new IndexWriter(fs, new StandardAnalyzer(), true); 
		// 构建一个索引器,并以内存作为其目标路径
		IndexWriter ramWriter = new IndexWriter(ram, new StandardAnalyzer(), true); 
		// 创建第一个文档
		Document d1 = new Document();
		Field f1 = new Field("book", "平凡的世界", Field.Store.YES, Field.Index.TOKENIZED);
		d1.add(f1);
		// 创建第二个文档
		Document d2 = new Document();
		Field f2 = new Field("book", "基督山伯爵", Field.Store.YES, Field.Index.TOKENIZED);
		d2.add(f2);
		
		fsWriter.addDocument(d1);
		ramWriter.addDocument(d2);
		// 关闭内存索引器
		ramWriter.close();
		// 合并索引
		fsWriter.addIndexes(new Directory[]{ram});
		// 关闭磁盘索引器
		fsWriter.close();
	}
	public static void main(String[] args) throws Exception {
		new UniteIndex().uniteTest();
	}

}

 

分享到:
评论

相关推荐

    Lucene 删除 合并索引

    Lucene 删除 合并索引,可以指定几个索引文件合并成一个索引文件。自己写的,有很多不足之处请多指教

    Lucene5学习之增量索引(Zoie)

    总结起来,Lucene5学习之增量索引(Zoie)涉及到的关键技术点包括: 1. 基于Lucene的增量索引解决方案:Zoie系统。 2. 主从复制架构:Index Provider和Index User的角色。 3. 数据变更追踪:通过变更日志实现增量索引...

    基于lucene技术的增量索引

    - **优化索引**:定期执行索引优化(`IndexWriter.optimize()`)可以合并较小的段,提高搜索效率,但需要注意这是一项耗时操作,应谨慎使用。 - **恢复机制**:应建立备份策略,以防数据丢失或系统故障。Lucene提供...

    Lucene之删除索引

    在深入探讨Lucene删除索引这一主题之前,我们先来理解一下Lucene的基本概念。Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发。它提供了高性能、可扩展的搜索和索引功能,广泛应用于各种应用程序中,如...

    lucene全文检索简单索引和搜索实例

    二、Lucene索引创建流程 1. 初始化:首先,我们需要导入Lucene库,并创建一个标准的Analyzer,例如StandardAnalyzer,它对输入的文本进行标准化处理。 2. 创建索引目录:索引数据会存储在一个Directory对象中,...

    深入了解Lucene之二 索引结构.ppt

    《深入理解Lucene之二:索引结构》 Lucene是一个强大的全文搜索引擎库,它的核心功能之一就是构建高效的索引结构,使得数据的检索过程快速而精准。本篇内容将详细解析Lucene的索引结构,帮助你更好地理解和运用这个...

    lucene并行索引

    5. **索引合并策略**:考虑到不同节点生成的局部索引可能存在冲突,需要设计合理的合并策略,确保最终索引的一致性和完整性。 #### 五、案例分析 假设有一家互联网公司正在开发一个新的搜索引擎产品,他们选择使用...

    Lucene5学习之多线程创建索引

    《Lucene5学习之多线程创建索引》 在深入了解Lucene5的多线程索引创建之前,我们先来了解一下Lucene的基本概念。Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了强大的文本分析、索引和搜索...

    Lucene读取索引文件

    在开发过程中,有时会遇到需要查看二进制索引文件内容的情况,这时可以使用工具如jd-gui.exe(Java反编译器),虽然它主要用于查看Java字节码,但在某些情况下也可以辅助理解Lucene索引文件的组成。然而,由于Lucene...

    lucene索引优化多线程多目录创建索引

    通过对“lucene_multiThreadIndex”压缩包的学习,你将掌握如何在Lucene中实现多线程索引,从而提高大型数据集的索引构建速度。通过实践,你可以更好地理解和应用这些技术,优化你的信息检索系统。

    lucene索引结构原理

    **Lucene索引结构原理** Lucene是Apache软件基金会的开放源代码全文搜索引擎库,它为Java开发人员提供了强大的文本搜索功能。理解Lucene的索引结构原理对于优化搜索性能和设计高效的搜索应用至关重要。 首先,我们...

    lucene学习资料收集

    优化索引是合并多个段到一个新段的过程,以减少搜索时的磁盘I/O。 9. **多语言支持(Multilingual Support)**:Lucene提供了多种语言的分析器,适应不同语言的搜索需求。 10. **扩展性(Extensibility)**:...

    lucene实现索引查询

    8. **优化索引**:`IndexWriter.optimize()`可以合并索引段,提高查询性能。 9. **关闭索引写入器**:完成所有操作后,记得关闭`IndexWriter`以释放资源。 ### 二、查询索引 查询索引包括以下步骤: 1. **打开...

    索引合并策略

    索引合并是优化数据检索性能的关键技术之一,尤其在处理大量数据时,如Lucene这样的全文检索库,索引合并策略显得尤为重要。本文将详细探讨索引合并的原理以及如何在Lucene中实现这一策略。 索引合并,顾名思义,是...

    lucene索引文件格式介绍

    以下是对Lucene索引文件格式的详细说明。 首先,我们要理解Lucene索引的基本结构。一个Lucene索引位于一个文件夹中,这个文件夹包含了多个段(Segment)。每个段是独立的,包含了一组文档,并且可以与其他段合并。...

    Lucene对本地文件多目录创建索引

    - `lukeall-0.8.1.jar`:Luke是一个用于查看和分析Lucene索引的工具,可以帮助开发者调试和理解索引结构。 - `log4j-1.2.12.jar`:日志框架,用于记录程序运行时的信息。 - `commons-httpclient-3.1.jar`:可能是...

    lucene学习-02

    7. **优化与备份**:索引优化(Merge)可以合并多个Segment,提高搜索性能。备份索引则确保数据安全。 【标签】:“lucene学习” 学习Lucene的同时,你可能会遇到以下标签相关的知识点: - **倒排索引**:Lucene...

Global site tag (gtag.js) - Google Analytics