1. 程式人生 > >基於lucene建立實時索引基礎jar包

基於lucene建立實時索引基礎jar包

         最近的工作需要自己建立各種內部產品的索引,每次都要重複一樣的工作,不斷的將一個專案下的類檔案拷貝到另一個專案中,然後修改一些配置,這種事情真的很浪費時間,因此自己就總結了這個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