`
damies
  • 浏览: 238571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Lucene索引合并解决方法

阅读更多

由于Clustor的问题造成无法对索引进行同步,脑子中马上浮现用rmi(双机),UDP广播(多机)作通信中间件对clustor进行索引同步但这样经过测试后效率相对较低,故另辟蹊径,最终用索引合并的方式进行快速的索引整合,达到时间短索引同步快的目的。代码如下:

package com.pccw;

import java.io.File;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.FSDirectory;

public class AdvancedTextFileIndexer {
	/**
	 * @author Shane Zhao about merge Index in PCCW BJDEV
	 * 将小索引文件合并到大的索引文件中去
	 * 
	 * @param from
	 *            将要合并到to文件的文件
	 * @param to
	 *            将from文件合并到该文件
	 * @param sa
	 */
	private static void mergeIndex(File from, File to,StandardAnalyzer sa) {
		IndexWriter indexWriter = null;
		try {
			System.out.println("正在合并索引文件!\t ");
			indexWriter = new IndexWriter(to, sa, false);
			indexWriter.setMergeFactor(100000);
			indexWriter.setMaxFieldLength(Integer.MAX_VALUE);
			indexWriter.setMaxBufferedDocs(Integer.MAX_VALUE);
			indexWriter.setMaxMergeDocs(Integer.MAX_VALUE);
			FSDirectory[] fs = { FSDirectory.getDirectory(from, false) };
			indexWriter.addIndexes(fs);
			indexWriter.optimize();
			indexWriter.close();
			System.out.println("已完成合并!\t ");
		} catch (Exception e) {
			System.out.println("合并索引出错!");
			e.printStackTrace();
		} finally {
			try {
				if (indexWriter != null)
					indexWriter.close();
			} catch (Exception e) {

			}

		}

	}
	
	public static void main(String[] areg){
		File from = new File("F:/web/faq/lucene/indexDir");
		File to = new File("F:/indexDir");
		mergeIndex(from,to,new StandardAnalyzer());
	}

}

测试效率为两个150M的索引文件合并时间在10-15s 效率还是很令人满意的。

分享到:
评论
3 楼 bluepeer 2011-08-18  
有没有试过性能??
2 楼 gml520 2010-04-06  
非常谢谢!
1 楼 diddyrock 2009-03-11  
thanks

相关推荐

    Lucene 删除 合并索引

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

    lucene索引结构原理

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

    Lucene读取索引文件

    在实际应用中,为了提高性能,通常会定期进行索引合并,以减少segment的数量,同时清除已删除的文档。这个过程由`IndexWriter`类管理,通过调用`commit()`方法完成。 总的来说,Lucene通过精心设计的索引结构和高效...

    lucene索引文件格式介绍

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

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

    5. **合并索引**:所有线程完成索引后,使用IndexWriter的`addIndexes()`方法将所有子索引合并到一个主索引中。 这个过程需要注意线程同步问题,确保在合并索引之前,所有线程已经完成了它们的工作,避免并发冲突。...

    lucene并行索引

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

    基于lucene技术的增量索引

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

    Lucene之删除索引

    了解了这些基本原理后,我们可以通过阅读提供的链接(http://blog.csdn.net/nupt123456789/article/details/10666105)获取更多关于Lucene删除索引的实战技巧和注意事项。同时,`HelloLucene_delete`这个压缩包文件...

    luke lucene索引查看

    **Lucene索引查看工具Luke** Lucene是一个高性能、全文本搜索库,广泛应用于各种搜索引擎的开发中。在开发和调试过程中,为了更好地理解和检查由Lucene创建的索引,通常会使用一个名为Luke的工具。Luke是"Lucene ...

    基于Lucene索引的分析与实现

    Lucene,作为一个强大的Java全文检索库,提供了便捷的索引和搜索功能,为解决海量数据的检索难题提供了有效的解决方案。 全文检索是指从大量非结构化数据中提取关键信息,构建索引,然后通过索引快速定位所需信息的...

    lucence 索引合并 汇总

    ### Lucene索引合并知识点详解 #### 一、Lucene简介 Apache Lucene是一个高性能、全功能的文本搜索引擎库。它提供了一套完整的文本搜索功能,包括全文检索、索引创建与管理等,并且可以非常方便地嵌入到Java应用...

    如何将Lucene索引写入Hadoop?

    标题 "如何将Lucene索引写入Hadoop" 指涉的是在大数据处理场景下,如何利用Apache Lucene的全文检索功能与Apache Hadoop的分布式计算能力相结合,实现高效的数据检索。Apache Lucene是一个高性能、全文本搜索库,而...

    lucene实现索引查询

    以下是关于使用Lucene实现索引查询的详细知识: ### 一、创建索引 创建索引是Lucene的核心过程,它涉及到以下步骤: 1. **定义索引目录**:首先,你需要指定一个目录来存储索引文件。这通常是一个文件夹,可以...

    Lucene索引文件格式

    《Lucene索引文件格式详解》 Lucene,作为一款强大的全文搜索引擎库,其索引文件格式是实现高效搜索的关键。本文将深入解析Lucene 1.3版本的索引文件结构,帮助读者理解其内部运作机制。 首先,我们要理解Lucene...

    LUCENE索引搜索数据库技术汇总

    **LUCENE索引搜索数据库技术汇总** Lucene是一个高性能、全文检索库,它是Apache软件基金会的顶级项目,被广泛应用于各种搜索引擎的开发。在学习和应用Lucene的过程中,掌握其核心概念和技术至关重要。以下是对...

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

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

    索引合并策略

    在上述代码中,`mergeIndex` 方法展示了如何在Lucene中进行索引合并。首先,我们创建了一个`IndexWriter`实例,传入了目标合并的索引文件、标准分析器(`StandardAnalyzer`)以及一些设置参数。`setMergeFactor`方法...

    Lucene5学习之增量索引(Zoie)

    Lucene本身并不直接支持增量索引,因此,开发者们开发了Zoie系统,它是基于Lucene的一个扩展,旨在解决大数据量场景下的实时索引问题。Zoie的名字来源于“Zero Indexing Overhead”,即零索引开销,它的核心思想是...

    ik分词器2012和lucene的资源和jar包以及lucene索引查看工具

    例如Luke工具(Lucene Index Viewer),它是一个GUI应用程序,可以打开并浏览Lucene索引的详细信息,包括字段、文档、术语及其频率等。这个工具对于开发和优化搜索性能非常有用。 5. **使用流程**: - **创建索引*...

    lucene 索引工具源码(桌面版)

    IndexWriter 类是这个过程的主要接口,它可以添加、删除和更新文档,并控制段合并策略,以优化索引性能。 5. **倒排索引(Inverted Index)**:这是 Lucene 的核心数据结构。倒排索引将每个词元映射到包含该词元的...

Global site tag (gtag.js) - Google Analytics