`
刘小小尘
  • 浏览: 66093 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

lucene使用教程6 --lucene在项目里的集成

 
阅读更多

设计良好的线程模式保证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();
		}
	}



分享到:
评论

相关推荐

    je-analysis-1.5.3、lucene-core-2.4.1分词组件

    在IT领域,分词组件是文本处理和搜索引擎技术中的关键组成部分。本文将深入探讨"je-analysis-1.5.3"和"lucene-core-...在实际项目中,应根据具体需求选择合适的分词策略和Lucene版本,以实现最优的系统性能和用户体验。

    lucene-core-3.0.2.jar,lucene-demos-3.0.2.jar

    对于任何需要在大量文本数据中进行高效检索的项目,Lucene都是一个值得考虑的选择。然而,随着技术的不断发展,后续的版本(如6.x、8.x)带来了更多的改进和新特性,开发者在选择时也应考虑到版本的更新和兼容性问题...

    lucene-core-2.4.0.jar

    此外,随着版本迭代,Lucene与其他项目(如Solr、Elasticsearch)的结合,使其在大数据、云服务等领域发挥着重要作用。 总结,Lucene是一个强大且灵活的全文搜索引擎库,无论是在2.4.0版本还是后续版本,其核心机制...

    lucene第一步---5.中文分词IKAnalyzer和高亮highlighter的使用

    中文分词IKAnalyzer和高亮highlighter的使用”指出,这个主题将探讨如何在Lucene中应用IKAnalyzer进行中文分词,以及如何使用高亮器(highlighter)来突出搜索结果中的关键词。Lucene是Apache软件基金会的一个开放源...

    Lucene-core-2.0.0

    5. **开发实践**: 在实际开发中,除了直接使用Lucene-core外,还可能需要结合其他模块,如Solr或Elasticsearch,它们是基于Lucene构建的更高级的搜索服务器,提供了更多的管理和部署功能。 6. **学习路径**: 学习...

    Lucene-core-2.0.0.jar

    总的来说,"Lucene-core-2.0.0.jar"是开发全文检索应用的基础,它集成了索引、查询、分词等关键功能,并在2.0.0版本中进行了优化,使得开发更加高效,搜索更加精准。无论你是搜索引擎的初学者还是经验丰富的开发者,...

    lucene-2.1.0-src.zip

    作为纯Java库,Lucene可以无缝集成到任何Java项目中。开发者可以利用Java的面向对象特性,自定义Analyzer、Filter、Sorter等组件,以满足特定需求。 6. **未来发展方向** 随着版本的不断迭代,Lucene在分布式搜索...

    springmvc集成lucene全文搜索

    本篇文章将深入探讨如何在Spring MVC项目中集成Lucene进行全文搜索,以提升用户体验。 首先,我们需要理解Spring MVC和Lucene的基本概念。Spring MVC是一种基于模型-视图-控制器(MVC)架构模式的轻量级Web框架,它...

    Lucene3.1使用教程

    **Lucene 3.1 使用教程** Lucene 是一个高性能、全文检索库,由Apache软件基金会开发并维护。它提供了一个简单但功能强大的API,使得开发者可以轻松地在应用程序中集成全文检索功能。本教程主要关注的是Lucene 3.1...

    je-analysis-1.5.3;lucene-core-2.9.2

    在实际应用中,开发者需要了解每个jar包的API,学习如何正确地集成到项目中,例如设置配置、调用方法、处理异常等。同时,由于这些库都是基于Java,因此需要确保运行环境支持Java,并且与其他Java库无冲突。在开发...

    Incubating-Apache-Lucene.Net-2.0-004-11Mar07.src.zip

    它是一个开源项目,专为.NET Framework设计,实现了Java版本Lucene的主要功能,使得.NET开发者能够轻松地在他们的应用程序中集成高级搜索功能。"Incubating-Apache-Lucene.Net-2.0-004-11Mar07.src.zip"是Lucene.Net...

    MMAnalyzer 分词jar包(lucene-core-2.4.1.jar je-analysis-1.5.3.jar)

    在使用MMAnalyzer时,首先需要将其与lucene-core-2.4.1.jar一起引入项目中。然后,可以通过实例化MMAnalyzer对象并调用其方法来进行分词操作。例如,可以创建一个Analyzer实例,设置分词参数,接着使用TokenStream来...

    lucene所有的jar包

    本文将详细介绍“lucene所有的jar包”,特别是其中的“my的jar”和“ik的jar包”,以及它们在Lucene 4.9.0版本中的作用和使用方法。 一、Lucene简介 Lucene是Apache软件基金会的一个开放源代码项目,它提供了一个...

    最新版windows lucene-8.10.0.zip

    在使用这个压缩包时,首先需要解压,然后根据提供的API文档和示例代码,将Lucene集成到你的Java项目中,创建和管理索引,执行搜索查询,并处理搜索结果。同时,确保你的系统环境满足Lucene的运行要求,例如Java版本...

    lucene-core-2.3.0 lucene-core2.4.0以及极易分词器 jar包

    这里提到的是Lucene的两个不同版本——2.3.0和2.4.0,这两个版本都是较早的版本,但仍然在某些场景下被使用,特别是对于那些对新特性需求不大的项目。 `lucene-core-2.3.0` 是Lucene的一个早期版本,它包含了构建...

    Lucene.net-4.8.0 -new Bate.rar

    在.NET平台上,Lucene.Net通过提供C#和VB.NET的API,使得.NET开发者能够轻松地集成全文检索功能。4.8.0版本的更新,主要集中在性能提升、稳定性增强以及对.NET Framework和.NET Core的兼容性改进。 二、核心概念 1...

    Apache-Lucene.Net-3.0.3-RC2.bin

    对于Lucene.Net,此文件可能详细说明了如何在.NET环境中集成和运行Lucene.Net。 4. **ACKNOWLEDGEMENTS.txt**:感谢所有对项目做出贡献的人和组织,包括代码贡献者、测试者、翻译者等。这体现了开源社区的合作精神...

    Lucene使用教程

    ### Lucene 使用教程 #### 一、Lucene简介与安装 **1.1 Lucene简介** Lucene是一款高性能、全功能的文本搜索引擎库,由Java编写而成,它为开发者提供了构建搜索应用程序的基础工具。Lucene的主要特点包括: - **...

    IK分词器集成lucene4.5使用方法

    在本教程中,我们将探讨如何将IK分词器集成到Lucene 4.5版本中,以提升中文文本处理的效率和准确性。 首先,让我们了解一下IKAnalyzer。IKAnalyzer是由国人开发的一款开源中文分词库,它具有较好的分词效果和较高的...

    C#调用Lucene方法-实现快速搜索

    1. **引入Lucene库**:在C#项目中,首先需要添加对Lucene.NET的引用。可以通过NuGet包管理器安装`Lucene.Net`和`Lucene.Net.Analysis.Standard`等必要的包。 2. **创建索引**:索引是Lucene搜索的核心。我们需要...

Global site tag (gtag.js) - Google Analytics