一個簡單的Lucene工具類

wsm-lucene

一個簡單的Lucene工具類,經過註釋的方式來配置構建索引的字段。提供新建索引、查找、刪除、更新方法,支持分頁。代碼地址:https://gitee.com/shaojiepeng...git

所需jar包

  1. lucene-core:2.4.0
  2. lucene-analyzers:2.4.1
  3. commons-logging:1.2

背景

之前在作某個feature的時候,鑑於存儲在DB中的數據量過大,故使用Lucene來優化查找性能。
相信你們在某些場景下會把DB中的數據讀出來,建索引來優化查找。那麼這個工具類就比較適合這些場景了。工具

如何使用

從附件中下載jar包直接導入到項目中,或者下載此Maven項目的源碼,使用項目依賴的方式導入你的項目。性能

  1. 經過註釋的方式配置須要構建索引的model類
**@IndexClass** :註釋,說明此model類須要構建索引
 **indexDirPath** :索引所存放的物理位置,如:"D:/Index"

 **@IndexField** :註釋,說明此字段須要構建索引
 **fieldStore** :Lucene中的Field.Store同義,不懂請自行查詢資料
 **fieldIndex** :Lucene中的Field.Index同義,不懂請自行查詢資料

圖片描述

  1. 建立索引
IndexService indexService = new IndexServiceImpl();
/** 構建索引的接口
 * List:model的集合
 * Class: model的class
 *
 * return boolean
**/
indexService.buildIndex(List, Class)

圖片描述

3.查找優化

ArrayList<SearchParamModel> searchParams = new ArrayList<>();
/**添加查詢的條件,若是有多個查詢條件,則添加SearchParamModel
 * fieldName:須要查找的字段,即model中的成員變量
 * fieldValue:須要查找字段的值,這個不解釋
 * BooleanType:Lucene中BooleanClause.Occur值,不懂請自行查詢資料
**/
searchParams.add(new SearchParamModel(fieldName, fieldValue, BooleanType));
IndexService indexService = new IndexServiceImpl();
/** 查詢的接口
 * searchParams:不解釋
 * Class: model的class
 *
 * return model的集合
**/
List objs = indexService.search(searchParams, Class);

圖片描述

IndexService中還支持update, delete和分頁查找的方法,請自行查閱代碼。ui

以爲不錯,請點個贊吧。spa

相關文章
相關標籤/搜索