设计良好的线程模式保证lucene的运行不影响原本项目的性能。而且大大降低了lucene和项目之间的耦合度。
索引的操作线程:
一下代码是从网上剪切过来的,可能有错误,但是原理都是一样的,明白了原理,什么都简单。稍后我会将我自己写的几个测试代码贴上去,可以 关注下后面的文字
public class MyIndexOperateThread extends Thread {
private static Logger logger = LogManager
.getLogger(MyIndexOperateThread.class);
private Object obj;
private String str;
private Long id;
private List<Long> ids;
private Operate operate;
/**
* 枚举
*
* @author wangrenhui
*
*/
public enum Operate {
update, delete, add
}
/**
* @param operate 更新和添加操作
* @param obj 更新的对象
* @param moduleMark 模块标示
*/
public MyIndexOperateThread(Operate operate, Object obj, String moduleMark) {
this.operate = operate;
this.obj = obj;
this.str = moduleMark;
}
/**
*
* @param operate 操作
* @param id id
* @param className 类名
*/
public MyIndexOperateThread(Operate operate, Long id, String className) {
this.operate = operate;
this.id = id;
this.str = className;
}
/**
*
* @param operate 删除操作
* @param ids id集合
* @param className 类名
*/
public MyIndexOperateThread(Operate operate, List<Long> ids,
String className) {
this.operate = operate;
this.ids = ids;
this.str = className;
}
@Override
public void run() {
try {
if (operate == Operate.delete) {
if (id != null) {
IndexCreateUtil.deleteDocument(id, str);
} else if (ids != null) {
IndexCreateUtil.deleteDocument(ids, str);
}
} else if (operate == Operate.update) {
IndexCreateUtil.updateDocument(obj, str);
} else if (operate == Operate.add) {
IndexCreateUtil.addDocument(obj, str);
}
} catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
} finally {
MyIndexWriter.close(); // 注意不是调用 IndexWriter.Close() !
}
}
}
数据持久层的使用:
/**
*
* @function 更新处方
* @param prescription 处方对象
*/
public void updatePrescription(Prescription prescription) {
this.getHibernateTemplate().update(prescription);
try {
MyIndexOperateThread indexOperateThread = new MyIndexOperateThread(Operate.update, prescription, "Prescription");//更新索引的线程
indexOperateThread.start();
} catch (Exception e) {
e.printStackTrace();
}
}
分享到:
相关推荐
springMVC集成lucene完整代码
IK分词器集成lucene4.5使用方法 在test 包内说明详细直观 内附IK源码
ik分析插件将lucene ik analyzer(http://code.google.com/p/ik-analyzer/)集成到elasticsearch中,支持自定义字典。
Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为其内部全文检索子系统的...
使用JPA,Lucene,Spring,DBUnit和JMockit的演示项目-持久并搜索简单的Book数据。 这是一个Maven项目。 要构建它并运行测试,首先需要安装maven( )。 一旦安装并运行了Maven,并且在本地克隆了项目,请导航至...
ssm+lucene
用于了解lucene4.5的使用以及和ssi的集成使用
Struts2.3+spring4+hibernate4+Lucene4.7+IKAnalyzer,中文分词,高亮显示,附带MySQL8000条测试数据。仅供学习参考
第1部分Lucene的核心,着重于Lucene的核心API介绍,并按照把Lucene集成到程序中的顺序宋组织;第2部分Lucene的应用,通过对Lucene内置工具的介绍,展示了Lucene技术的高级应用和在各种程序语言上的移植。. 本书既可...
搜索引擎工具包,集成了 jsmartco ,je-analysis1.4.0,lucene-core-2.0.0,heritrix,14.4
自己写的lucene基础入门
详细介绍了如何在tomcat下集成配置lucene3.0和2.0等多个版本,是初学者的不错选择,很实用!
基于SpringBoot编写的一个Lucene测试Demo把匹配到的结果高亮摘要显示在前端jsp上
第1部分lucene的核心 着重于lucene的核心 api介绍 并按照把lucene集成到程序中的顺序宋组织;第2部分lucene的应用 通过对lucene内置工具的介绍 展示了lucene技术的高级应用和在各种程序语言上的移植 本书既可作为...
作为一个开放源代码项目,Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为...
Mmseg Analysis插件将Lucene mmseg4j-analyzer: : 集成到elasticsearch中,支持自定义词典。 该插件随附以下分析器: mmseg_maxword , mmseg_complex , mmseg_simple和令牌生成器: mmseg_maxword , mmseg_...
在使用lucene3与paoding集成的时候可能会出现以下错误: Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z at org.apache.lucene.index....
Struts2.3.8整合Hibernate4.2,Spring3.2lucene 3 6 2 SSH整合1.0版
lucene-pdf lucene-pdf 是一个 JVM(Java、Scala、Groovy、Clojure 等)库,通过与集成,可以轻松地对 PDF 文本和元数据进行 Lucene 索引。“安装” lucene-pdf 在 Maven 中心可用; 将它添加到您的 Maven 项目的pom...
ssh 集成lucene,spring+ibitas+struts 资源开发 希望学lucene的人可以多了解下