资讯专栏INFORMATION COLUMN

一个简单的Lucene工具类

noONE / 1605人阅读

摘要:一个简单的工具类,通过注释的方式来配置构建索引的字段。提供新建索引查找删除更新方法,支持分页。代码地址所需包背景以前在做某个的时候,鉴于存储在中的数据量过大,故使用来优化查找性能。那么这个工具类就比较适合这些场景了。

wsm-lucene

一个简单的Lucene工具类,通过注释的方式来配置构建索引的字段。提供新建索引、查找、删除、更新方法,支持分页。代码地址:https://gitee.com/shaojiepeng...

所需jar包

lucene-core:2.4.0

lucene-analyzers:2.4.1

commons-logging:1.2

背景

以前在做某个feature的时候,鉴于存储在DB中的数据量过大,故使用Lucene来优化查找性能。
相信大家在某些场景下会把DB中的数据读出来,建索引来优化查找。那么这个工具类就比较适合这些场景了。

如何使用

从附件中下载jar包直接导入到项目中,或者下载此Maven项目的源码,使用项目依赖的方式导入你的项目。

通过注释的方式配置需要构建索引的model类

 **@IndexClass** :注释,说明此model类需要构建索引
 **indexDirPath** :索引所存放的物理位置,如:"D:/Index"

 **@IndexField** :注释,说明此字段需要构建索引
 **fieldStore** :Lucene中的Field.Store同义,不懂请自行查询资料
 **fieldIndex** :Lucene中的Field.Index同义,不懂请自行查询资料

创建索引

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

3.查找

ArrayList 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和分页查找的方法,请自行查阅代码。

觉得不错,请点个赞吧。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70634.html

相关文章

  • Lucene就是这么容易

    摘要:就其本身而言,是当前以及最近几年最受欢迎的免费信息检索程序库。这样完全和数据库进行了隔离。当一个文档出现在了搜索结果中,这就意味着该文档与用户给定的查询语句是相匹配的。 showImg(https://segmentfault.com/img/bVbuifx?w=258&h=258);公众号阅读https://mp.weixin.qq.com/s/M3... Lucene [TOC] ...

    894974231 评论0 收藏0
  • Lucene构建个人搜索引擎解析

    摘要:倒排索引是基于词的搜索。关于倒排索引要学习搜索引擎,就需要了解倒排索引,要更加深刻地理解倒排索引,就要先了解什么是正排索引表。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引。 Lucene是什么? Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引...

    wenshi11019 评论0 收藏0
  • Lucene 查询原理

    摘要:介绍如何优化数值类范围查询。查询过程在中查询是基于。在中为了查询的这样一个条件,会建立基于的倒排链。在单查询上可能相比并没有明显优势,甚至会慢一些。所以为了支持高效的数值类或者多维度查询,引入类。 前言 Lucene 是一个基于 Java 的全文信息检索工具包,目前主流的搜索系统Elasticsearch和solr都是基于lucene的索引和搜索能力进行。想要理解搜索系统的实现原理,就...

    FullStackDeveloper 评论0 收藏0
  • Lucene 查询原理

    摘要:介绍如何优化数值类范围查询。查询过程在中查询是基于。在中为了查询的这样一个条件,会建立基于的倒排链。在单查询上可能相比并没有明显优势,甚至会慢一些。所以为了支持高效的数值类或者多维度查询,引入类。 前言 Lucene 是一个基于 Java 的全文信息检索工具包,目前主流的搜索系统Elasticsearch和solr都是基于lucene的索引和搜索能力进行。想要理解搜索系统的实现原理,就...

    testHs 评论0 收藏0

发表评论

0条评论

noONE

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<