设计良好的线程模式保证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();
}
}
分享到:
相关推荐
在IT领域,分词组件是文本处理和搜索引擎技术中的关键组成部分。本文将深入探讨"je-analysis-1.5.3"和"lucene-core-...在实际项目中,应根据具体需求选择合适的分词策略和Lucene版本,以实现最优的系统性能和用户体验。
对于任何需要在大量文本数据中进行高效检索的项目,Lucene都是一个值得考虑的选择。然而,随着技术的不断发展,后续的版本(如6.x、8.x)带来了更多的改进和新特性,开发者在选择时也应考虑到版本的更新和兼容性问题...
此外,随着版本迭代,Lucene与其他项目(如Solr、Elasticsearch)的结合,使其在大数据、云服务等领域发挥着重要作用。 总结,Lucene是一个强大且灵活的全文搜索引擎库,无论是在2.4.0版本还是后续版本,其核心机制...
中文分词IKAnalyzer和高亮highlighter的使用”指出,这个主题将探讨如何在Lucene中应用IKAnalyzer进行中文分词,以及如何使用高亮器(highlighter)来突出搜索结果中的关键词。Lucene是Apache软件基金会的一个开放源...
5. **开发实践**: 在实际开发中,除了直接使用Lucene-core外,还可能需要结合其他模块,如Solr或Elasticsearch,它们是基于Lucene构建的更高级的搜索服务器,提供了更多的管理和部署功能。 6. **学习路径**: 学习...
总的来说,"Lucene-core-2.0.0.jar"是开发全文检索应用的基础,它集成了索引、查询、分词等关键功能,并在2.0.0版本中进行了优化,使得开发更加高效,搜索更加精准。无论你是搜索引擎的初学者还是经验丰富的开发者,...
作为纯Java库,Lucene可以无缝集成到任何Java项目中。开发者可以利用Java的面向对象特性,自定义Analyzer、Filter、Sorter等组件,以满足特定需求。 6. **未来发展方向** 随着版本的不断迭代,Lucene在分布式搜索...
本篇文章将深入探讨如何在Spring MVC项目中集成Lucene进行全文搜索,以提升用户体验。 首先,我们需要理解Spring MVC和Lucene的基本概念。Spring MVC是一种基于模型-视图-控制器(MVC)架构模式的轻量级Web框架,它...
**Lucene 3.1 使用教程** Lucene 是一个高性能、全文检索库,由Apache软件基金会开发并维护。它提供了一个简单但功能强大的API,使得开发者可以轻松地在应用程序中集成全文检索功能。本教程主要关注的是Lucene 3.1...
在实际应用中,开发者需要了解每个jar包的API,学习如何正确地集成到项目中,例如设置配置、调用方法、处理异常等。同时,由于这些库都是基于Java,因此需要确保运行环境支持Java,并且与其他Java库无冲突。在开发...
它是一个开源项目,专为.NET Framework设计,实现了Java版本Lucene的主要功能,使得.NET开发者能够轻松地在他们的应用程序中集成高级搜索功能。"Incubating-Apache-Lucene.Net-2.0-004-11Mar07.src.zip"是Lucene.Net...
在使用MMAnalyzer时,首先需要将其与lucene-core-2.4.1.jar一起引入项目中。然后,可以通过实例化MMAnalyzer对象并调用其方法来进行分词操作。例如,可以创建一个Analyzer实例,设置分词参数,接着使用TokenStream来...
本文将详细介绍“lucene所有的jar包”,特别是其中的“my的jar”和“ik的jar包”,以及它们在Lucene 4.9.0版本中的作用和使用方法。 一、Lucene简介 Lucene是Apache软件基金会的一个开放源代码项目,它提供了一个...
在使用这个压缩包时,首先需要解压,然后根据提供的API文档和示例代码,将Lucene集成到你的Java项目中,创建和管理索引,执行搜索查询,并处理搜索结果。同时,确保你的系统环境满足Lucene的运行要求,例如Java版本...
这里提到的是Lucene的两个不同版本——2.3.0和2.4.0,这两个版本都是较早的版本,但仍然在某些场景下被使用,特别是对于那些对新特性需求不大的项目。 `lucene-core-2.3.0` 是Lucene的一个早期版本,它包含了构建...
在.NET平台上,Lucene.Net通过提供C#和VB.NET的API,使得.NET开发者能够轻松地集成全文检索功能。4.8.0版本的更新,主要集中在性能提升、稳定性增强以及对.NET Framework和.NET Core的兼容性改进。 二、核心概念 1...
对于Lucene.Net,此文件可能详细说明了如何在.NET环境中集成和运行Lucene.Net。 4. **ACKNOWLEDGEMENTS.txt**:感谢所有对项目做出贡献的人和组织,包括代码贡献者、测试者、翻译者等。这体现了开源社区的合作精神...
### Lucene 使用教程 #### 一、Lucene简介与安装 **1.1 Lucene简介** Lucene是一款高性能、全功能的文本搜索引擎库,由Java编写而成,它为开发者提供了构建搜索应用程序的基础工具。Lucene的主要特点包括: - **...
在本教程中,我们将探讨如何将IK分词器集成到Lucene 4.5版本中,以提升中文文本处理的效率和准确性。 首先,让我们了解一下IKAnalyzer。IKAnalyzer是由国人开发的一款开源中文分词库,它具有较好的分词效果和较高的...
1. **引入Lucene库**:在C#项目中,首先需要添加对Lucene.NET的引用。可以通过NuGet包管理器安装`Lucene.Net`和`Lucene.Net.Analysis.Standard`等必要的包。 2. **创建索引**:索引是Lucene搜索的核心。我们需要...