`
wjcom1127
  • 浏览: 41416 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

lucene3.0 CRUD实例(二)

阅读更多
/**
	 * 更新索引中的数据
	 */
	public static void updateIndex()
	{
		System.out.println("更新开始==============");
		try
		{
			IndexWriter write = new IndexWriter(dir, new StandardAnalyzer(
					Version.LUCENE_30), true,
					IndexWriter.MaxFieldLength.UNLIMITED);
			
			Document docNew = new Document();
			docNew.add(new Field("id", "123456", Field.Store.YES,
					Field.Index.NOT_ANALYZED));
			docNew.add(new Field("userName", "王五", Field.Store.YES,
					Field.Index.ANALYZED));
			docNew.add(new Field("comefrom", "北京", Field.Store.YES,
					Field.Index.ANALYZED));
			
			Term term = new Term("id", "123456");
			/**
			 * 调用updateDocument的方法,传给它一个新的doc来更新数据, 
			 * Term term = new Term("id","1234567");
			 * 先去索引文件里查找id为1234567的Doc,如果有就更新它(如果有多条,最后更新后只有一条)。如果没有就新增.
			 * 
			 * 数据库更新的时候,我们可以只针对某个列来更新,而lucene只能针对一行数据更新。
			 */
			write.updateDocument(term, docNew);

			write.commit();
			write.close();
			System.out.println("===========成功把张三改成王五===========");
		} 
		catch (Exception e)
		{
			LOGGER.info(e.getMessage());
		}
		System.out.println("更新结束==============\n");
	}

	/**
	 * 查询字符串
	 * @param str
	 */
	public static void search(String str)
	{
		System.out.println("查询开始==============");
		try
		{
			QueryParser queryParser = new QueryParser(Version.LUCENE_30, "userName",   
	                new StandardAnalyzer(Version.LUCENE_30));   
			
			Query query = queryParser.parse(str);
			
			IndexSearcher search = new IndexSearcher(dir); 
			
			TopDocs hits = search.search(query, 20);
			
			/*
			 * 带参数的多个关键字解析
			 * Query q=parser.parse("太阳 月亮");
			 * queryParser.setDefaultOperator(queryParser.AND_OPERATOR);//同时含有多个关键字,如果是QueryParser.OR_OPERATOR表示或者
			*/
			
			if (hits.scoreDocs.length == 0 || hits == null)
			{
				System.out.println(" 没有搜索到'" + str + "' 查询结束\n");
				return;
			}
			
			for (int i = 0; i < hits.scoreDocs.length; i++)
			{
				ScoreDoc sdoc = hits.scoreDocs[i];   
	            Document doc = search.doc(sdoc.doc); 
				
	            System.out.println("own id     = " + doc.get("id"));
				System.out.println("userName   = " + doc.get("userName"));
				System.out.println("come from  = " + doc.get("comefrom"));
			}
		} 
		catch (Exception e)
		{
			LOGGER.info(e.getMessage());
		}
		System.out.println("查询结束==============\n");
	}
}
分享到:
评论

相关推荐

    lucene3.0 lucene3.0

    lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0

    lucene 3.0 入门实例

    ### 二、Lucene 3.0 API 实例 在入门实例中,我们通常会经历以下几个步骤: 1. **创建索引(Creating an Index)**: 首先,我们需要创建一个 IndexWriter 对象,配置相应的目录(Directory)和索引设置。然后,...

    Lucene3.0入门实例含jar包

    **Lucene 3.0 入门实例及关键知识点** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它为开发者提供了在应用程序中实现文本搜索功能的强大工具。本实例主要针对 Lucene 3.0 版本,这个版本虽然...

    lucene3.0基础实例

    二、Lucene 3.0核心概念 1. 文档(Document):文档是信息的基本单位,可以包含多个字段(Field),如标题、内容等。 2. 字段(Field):字段是文档的组成部分,每个字段有其特定的属性,如是否存储、是否可搜索等。...

    lucene 3.0 API 中文帮助文档 chm

    lucene 3.0 API中文帮助,学习的人懂得的

    Lucene3.0之查询类型详解

    【Lucene3.0查询类型详解】 在Lucene3.0中,查询处理是一个关键环节,涉及多种查询方式和理论模型。以下是对这些概念的详细解释: 1. **查询方式**: - **顺序查询**:是最简单的查询方式,直接遍历索引,效率较...

    lucene3.0 实例

    在这个实例中,我们将探讨如何在 JDK 1.5 和 Lucene 3.0 的环境下构建和运行一个简单的搜索引擎。 首先,Lucene 的核心概念包括文档(Document)、字段(Field)、索引(Index)和搜索(Search)。文档是存储信息的...

    lucene3.0使用介绍及实例

    在本文中,我们将深入探讨Lucene 3.0版本,了解其核心概念、功能特性,并通过实例来展示如何使用这个强大的工具。 ### 1. Lucene 3.0核心概念 #### 1.1 文档与字段 在Lucene中,数据是以文档(Document)的形式...

    Apache Lucene3.0 入门实例介绍

    这个入门实例将引导我们了解如何使用Lucene 3.0版本进行基本的索引和搜索操作。以下是对Lucene 3.0关键知识点的详细讲解: 1. **Lucene的架构**: Lucene的核心组件包括文档(Document)、字段(Field)、索引...

    lucene3.0全文检索入门实例

    **Lucene 3.0 全文检索入门实例** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了一个高级、灵活的搜索功能框架,允许开发者在自己的应用中轻松地集成全文检索功能。本文将重点介绍如何使用 ...

    lucene3.0 分词器

    lucene3.0 中文分词器, 庖丁解牛

    Lucene 3.0 原理与代码分析完整版

    《Lucene 3.0 原理与代码分析完整版》是一本深入解析Lucene 3.0搜索引擎库的专业书籍。Lucene是Apache软件基金会的开源项目,它为Java开发者提供了一个高性能、全文检索的工具包,广泛应用于各种信息检索系统。这...

    lucene3.0核心jar包

    这里的"lucene3.0核心jar包"是 Lucene 的一个重要版本,发布于2009年,为当时的开发人员提供了构建全文搜索引擎的基础框架。 在 Lucene 3.0 中,以下几个关键知识点值得关注: 1. **索引结构**:Lucene 使用倒排...

    Lucene3.0全文信息检索

    **二、Lucene 3.0 的主要特性** 1. **更高效的搜索**:Lucene 3.0通过优化搜索算法和数据结构,提高了搜索速度。例如,使用了改进的位向量技术,使得布尔查询更快。 2. **多线程支持**:在3.0版本中,Lucene增强了...

    lucene3.0庖丁+索引搜索程序

    本文将深入探讨Lucene3.0版本,结合“庖丁解牛”的精神,对其实现机制进行细致的剖析,并结合索引搜索程序的实例,帮助读者理解和应用这一强大的工具。 一、Lucene3.0概述 Lucene3.0是Apache软件基金会的一个项目...

    lucene3.0资料包

    这里我们主要聚焦于`lucene3.0`版本,该版本在当时是Lucene的一个重要里程碑,引入了许多改进和新特性。 1. **索引构建**: 在Lucene3.0中,索引是数据检索的基础。它通过将文本数据转换为倒排索引来实现快速查询...

    lucene3.0-highlighter.jar

    lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的

Global site tag (gtag.js) - Google Analytics