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

来源:互联网 发布:圣斗士观看顺序 知乎 编辑:程序博客网 时间:2024/06/05 10:00


转载请注明来源:http://blog.csdn.net/xiaojimanman/article/details/20624739

         最近的工作需要自己创建各种内部产品的索引,每次都要重复一样的工作,不断的将一个项目下的类文件拷贝到另一个项目中,然后修改一些配置,这种事情真的很浪费时间,因此自己就总结了这个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


0 0
原创粉丝点击