1. 程式人生 > >LucenePlus 改版正式歸來、初步滿足,簡、易、穩、快

LucenePlus 改版正式歸來、初步滿足,簡、易、穩、快

  

lucenePlus 改名為 lucenex 短的好記

lucenex

基於JDK 1.8 & lucene 7.x 的搜尋框架、在不影響原本效能的同時、提升80%的開發效率、降低70%的開發難度!!!

更新日誌

v1.0

*去除第三方分詞依賴&無用的Jar *使用cglib 動態代理建立 Service *新增攔截器 *新增更新 預設非同步

特點

原聲Lucene 用法

註解式宣告欄位

多庫自動切換

自動管理資源創建於釋放

自動高效能近實時索引

可持續擴充套件的Service 介面設計

內建常用的 增刪改查

可直接新增Java物件與Map集合 無需手動建立 Document

支援操作回退

可自定義分詞器

預設非同步提交和更新

用法

1、繼承 LuceneXConfig

public class DemoConfig extends LuceneXConfig{
	@Override
	public void configConstant(Constants me) {
	}
	@Override
	public void configLuceneX(BaseConfig me) {
		// 儲存目錄 、名稱、高亮、分詞器、儲存類
		me.add("d:/", "test",  false, new PerFieldAnalyzerWrapper(new StandardAnalyzer()), Empty.class);
	}
}

2、獲取Service

//預設使用第一個儲存庫(如果您只有一個庫或使用第一個庫的話)
BasisService basisService = LdService.newInstance(BasisService.class);
//自定義使用庫
BasisService basisService = LdService.newInstance(BasisService.class,"test");

3、內建基礎方法 滿足一般業務

public List<Document> TermQuery(String field,String value,int num)
public long IntDelete(String field,int value)
public void addIndex(List<?> list)
public List<Document> searchList(Query query, int n)
public <T> Page<Document> searchList(Query query,Page<Document> page)
public List<Document> searchTotal()
public long addDocuments(Iterable<? extends Iterable<? extends IndexableField>> docs)
public long addDocument(Iterable<? extends IndexableField> doc)
public int count(Query query)
public TopDocs search(Query query, int n)
public TopFieldDocs search(Query query, int n, Sort sort)
public long deleteAll()
public long deleteDocuments
public long deleteDocuments(Term... terms)
public void deleteUnusedFiles()
public long updateIndex(List<Document> list,Term term)
public List<Document> toDocument(List<?> list)
public void goBack()

4、如何測試

//手動啟動
LuceneX.start(DemoConfig.class);

5、如何實現自己的Service

5.1、繼承BasisService

5.2、可以使用父類已有的基礎方法也可以使用 SourceConfig config 變數獲取以下欄位

private String indexPath;//儲存地址
private boolean highlight;//是否高亮
private IndexWriter writer;//寫入物件
private IndexSearcher searcher;//查詢物件
private PerFieldAnalyzerWrapper analyzer;//分詞器
private Class<?> defaultClass;//儲存物件Class
private Highlighter highlighter;//高亮標籤

5.3、使用例項Demo

default public int count(Query query) throws IOException {
	return config.getSearcher().count(query);
}