您的位置:首页 > 其它

基于lucene创建实时索引基础jar包

2014-03-06 14:31 267 查看
转载请注明来源:/article/2606855.html

最近的工作需要自己创建各种内部产品的索引,每次都要重复一样的工作,不断的将一个项目下的类文件拷贝到另一个项目中,然后修改一些配置,这种事情真的很浪费时间,因此自己就总结了这个jar包lucene_4.3.1_fat.jar,这个jar包基于lucene4.3.1版本做的。下面就简单介绍下关于jar包的使用:

lucene_fat.jar使用说明

1、依赖jar包:

lucene-analyzers-common-4.3.1.jar

lucene-analyzers-smartcn-4.3.1.jar

lucene-core-4.3.1.jar

lucene-highlighter-4.3.1.jar

lucene-queries-4.3.1.jar

lucene-queryparser-4.3.1.jar

2、提供功能:

1) 提供实时索引的创建、管理

2) Query的创建

3、包介绍

1) cn.lulei.lucene.index 索引管理包

ConfigBean 索引配置基本属性参数类

IndexConfig 创建索引时使用的参数类

IndexManager 索引管理类

NRTIndex 索引修改类

2) cn.lulei.lucene.query Query创建包

EstablishQuery 组装Query类

LuceneKey 字符串中lucene特殊字符处理类

3) cn.lulei.lucene.test 测试包

LuceneInitTest 索引创建测试类

QueryTest EstablishQuery测试类

4、使用方法

1) 索引

配置实时索引的一些参数,调用IndexConfig.setConfigBean(HashSet<ConfigBean> configBean)方法来配置,在执行关于IndexManager类和NRTIndex类中的方法时,请确保方法IndexConfig.setConfigBean(HashSet<ConfigBean> configBean)已执行,否则将使用默认配置。

configBean中的属性说明:analyzer 分词器;indexPath 索引地址;indexReopenMinStaleSec 索引reopen最小时间间隔;indexReopenMaxStaleSec 索引reopen最大时间间隔;indexCommitSeconds 索引commit周期;indexName 索引名字

获取索引管理类IndexManager,调用方法IndexManager.getIndexManager(String indexName)来实现

获取可供使用的IndexSearcher,IndexManager调用getIndexSearcher()方法来实现。IndexSearcher主要用于搜索功能,在使用完毕之后,需调用release(IndexSearcher searcher)来释放

NRTIndex修改索引中的数据,构造方法NRTIndex(String indexName)指定对哪个索引进行修改,在使用类NRTIndex中的修改索引方法,如系统一直处于后台运行状态,可以不调用commit()方法,在indexCommitSeconds内会自动执行commit()操作;如修索引后程序即将结束,请在程序结束前调用commit()方法,避免数据丢失。

2) 组装Query

EstablishQuery的构造方法 EstablishQuery(String indexName)在组装Query时使用indexName索引中的分词器; EstablishQuery(Analyzer analyzer)在组装Query时使用analyzer分词器

EstablishQuery中提供了几种常用的Query组装方法,在调用这些方法时,先调用LuceneKey类中的方法对字符串做预处理。

注:lucene_4.3.1_fat.jar 包已经将依赖的jar包打包进来,不需要再次导入这些jar包。

下面给出两个测试案例

创建实时索引:

/**  
 *@Description:  创建索引测试类
 */ 
package cn.lulei.lucene.test;  

import java.util.HashSet;

import cn.lulei.lucene.index.ConfigBean;
import cn.lulei.lucene.index.IndexConfig;
import cn.lulei.lucene.index.IndexManager;
  
public class LuceneInitTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub 
		HashSet<ConfigBean> configBeanHS = new HashSet<ConfigBean>();
		for (int i = 0; i < 4; i++) {
			ConfigBean configBean = new ConfigBean();
			configBean.setIndexPath("d:/index");
			configBean.setIndexName("test" + i);
			configBeanHS.add(configBean);
		}
		IndexConfig.setConfigBean(configBeanHS);
		IndexManager indexManager = IndexManager.getIndexManager("test0");
		indexManager.release(indexManager.getIndexSearcher());
		IndexManager.getIndexManager("test1");
	}
}
该实例创建了四个索引,执行结束后创建如图所示的文件。



Query组装实例:

/**  
 *@Description: 创建查询Query测试
 */ 
package cn.lulei.lucene.test;  

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.util.Version;

import cn.lulei.lucene.query.EstablishQuery;
  
public class QueryTest {

	public static void main(String[] args) throws ParseException {
		// TODO Auto-generated method stub  
		EstablishQuery establishQuery = new EstablishQuery(new StandardAnalyzer(Version.LUCENE_43));
		System.out.println(establishQuery.getOneFieldQuery("你好呀", "field", false));
	}

}
执行结果: field:"你 好 呀"

lucene_4.3.1_fat.jar 的下载地址:http://download.csdn.net/detail/xiaojimanman/7000175

源码下载地址:http://download.csdn.net/detail/xiaojimanman/7000219
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: