`
damies
  • 浏览: 236415 次
  • 性别: 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-Indexing:为实验语料库生成 Lucene 索引 (AP89)

    Lucene 索引 为实验语料库生成 Lucene 索引 (AP89) 使用 Lucene 创建索引。 从 Lucene 的角度来看,每个...Lucene索引有以下字段:1.DOCNO,2.HEAD(合并两个<HEAD>), 3. (合并两个<HEAD>), 4., and 5. .

    lucene检索实例代码,自己总结的非常详细

    文档中包含Lucene4.0.0版本jar包,中文分词器jar包,Lucene实例代码 1:建立索引 2:各种搜索方式方法 3:删除索引 4:检查索引文件 5:恢复删除的索引 6:强制删除 7:更新索引 8:合并索引 9:高亮回显 供大家参考...

    Lucene 3.0 原理与代码分析

    本系列文章将详细描述几乎最新版本的Lucene的基本...Lucene学习总结之四:Lucene索引过程分析(1) http://www.cnblogs.com/forfuture1978/archive/2010/02/02/1661439.html Lucene学习总结之四:Lucene索引过程分析(2) ...

    lucene2.9.1所有最新开发包及源码及文档

    对索引文件的segment进行写、合并、优化的IndexWriter类。对索引进行读取和删除操作的IndexReader类。 3) store模块:负责索引的存储。提供索引的各种存储类:FSDirectory,RAMDirectory等。 4) document模块:...

    lucene搜索引擎【代码以及jar包】

    然后通过与原有索引的合并,达到优化的目的。  (3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。  (4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流...

    Lucene搜索引擎开发权威经典 光盘

    介绍了Lucene建立索引的过程,索引的查看和删除,索引的同步,索引的合并和优化等内容。第4部分:搜索的高级知识。介绍使用不同的Query对象构建搜索请求,使用QueryParser解析用户的搜索请求,搜索结果的过滤和排序...

    Lucene 3.0 原理与代码分析完整版

    1.6 Lucene学习总结之四:Lucene索引过程分析(1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 1.7 Lucene学习总结之四:Lucene索引过程分析(2) . . . . . . . . . . . ....

    Lucene在web项目中的应用

    Lucene在web项目中的应用,孔浩老师讲的,从建立索引-搜索-分词,到在留言项目中的应用,适合搜索初学者代码练习...

    lucene.net搜索技术,附带学习资料

    另外就是可以用多线程来分别对不同的内容进行索引并保存到RAMDirectory里,然后再把所有的内存索引合并到FSDirectory里,甚至可以让多台服务器分别处理内容的各个部分,然后把索引结果放到一个队列里,再有一台机器...

    基于Lucene的实时全文检索系统(含论文)

    不可否认的是,Esearch依然存在某些问题没有解决,例如针对索引的删除操作,合并策略的自定义等。同时对Esearch的性能测试不够充分。没有对数据量达到一定规模后的系统性能和针对不同查询类型进行响应时间的测试。...

    基于合并因子的多种格式文件索引技术

    基于合并因子的多种格式文件索引技术,基于Lucene的全文索引技术,全文检索引擎的开发应用。

    【分享:lucene学习资料】---<下载不扣分,回帖加1分,欢迎下载,童叟无欺>

    8. 索引的合并 18 9. 各种Query 18 9.1. 概述 18 9.2. 使用特定的分析器搜索 18 9.3. 按词条搜索—TermQuery 19 9.4. 按“与或”搜索—BooleanQuery 19 9.5. 在某一范围内搜索—RangeQuery 19 9.6. 使用前缀搜索—...

    Lucene 原理与代码分析完整版.pdf

    3. 合并相同的词(Term)成为文档倒排(Posting List)链表。 ......................................... 18 四、如何对索引进行搜索? ..............................................................................

    自己动手写搜索引擎(罗刚著).doc

    6.2.5 索引的合并 151 6.2.6 索引的定时更新 152 6.2.7 索引的备份和恢复 153 6.2.8 修复索引 154 6.3 读写并发控制 154 6.4 优化使用 Lucene 155 6.4.1 索引优化 155 6.4.2 查询优化 157 6.4.3 实现时间加权排序 ...

    codeidx:CodeIDX是一个旨在对大型项目的源索引进行索引的应用程序,使您可以在几秒钟内搜索它们-Search source code

    该工具使用Lucene为源代码建立索引。 它公开了一个用于搜索索引文件文本的UI。 它具有一项订阅文件系统通知更改的服务,以便为新文件建立索引,为已修改文件重新建立索引并从索引中删除已删除的文件。 特征 创建一个...

    java文集

    正则表达式 lucene索引合并 探查Weblogic JDBC Multipool 问题 struts通用Exception处理 Grails中默认数据库HSQLDB点滴 从request获取各种路径总结 DIV实现的表格自动伸张与收缩 java 邮件...

    基于合并因子的多种格式文件索引技术 (2012年)

    为了改进传统的文本检索技术存在检索文件格式种类单一,索引大数据量文件速度慢,甚至造成内存溢出等问题,基于Lucene系统及相关技术,研究了基于合并因子的多种格式文件索引技术,并在此基础上构建了中文文本信息...

    Elasticsearch 技术解析与实战.zip

    前言 第1章 Elasticsearch入门 1 1.1 Elasticsearch是什么 1 1.1.1 Elasticsearch的历史 2 1.1.2 相关产品 3 1.2 全文搜索 3 1.2.1 Lucene介绍 4 1.2.2 Lucene倒排索引 4 1.3 基础知识 6 1.3.1 Elasticsearch术语及...

    网络爬虫调研报告.docx

    而Lucene只是个搜索引擎工具,它提供API接口,通过编写程序对信息进行索引和检索,在其后台需要网络爬虫程序的支持,其目的是通过网络爬虫软件抓取网页,作为提供给Lucene搜索引擎的资源,进行索引和查询。...

Global site tag (gtag.js) - Google Analytics