/**
* 更新索引中的数据
*/
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
### 二、Lucene 3.0 API 实例 在入门实例中,我们通常会经历以下几个步骤: 1. **创建索引(Creating an Index)**: 首先,我们需要创建一个 IndexWriter 对象,配置相应的目录(Directory)和索引设置。然后,...
**Lucene 3.0 入门实例及关键知识点** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它为开发者提供了在应用程序中实现文本搜索功能的强大工具。本实例主要针对 Lucene 3.0 版本,这个版本虽然...
二、Lucene 3.0核心概念 1. 文档(Document):文档是信息的基本单位,可以包含多个字段(Field),如标题、内容等。 2. 字段(Field):字段是文档的组成部分,每个字段有其特定的属性,如是否存储、是否可搜索等。...
lucene 3.0 API中文帮助,学习的人懂得的
【Lucene3.0查询类型详解】 在Lucene3.0中,查询处理是一个关键环节,涉及多种查询方式和理论模型。以下是对这些概念的详细解释: 1. **查询方式**: - **顺序查询**:是最简单的查询方式,直接遍历索引,效率较...
在这个实例中,我们将探讨如何在 JDK 1.5 和 Lucene 3.0 的环境下构建和运行一个简单的搜索引擎。 首先,Lucene 的核心概念包括文档(Document)、字段(Field)、索引(Index)和搜索(Search)。文档是存储信息的...
在本文中,我们将深入探讨Lucene 3.0版本,了解其核心概念、功能特性,并通过实例来展示如何使用这个强大的工具。 ### 1. Lucene 3.0核心概念 #### 1.1 文档与字段 在Lucene中,数据是以文档(Document)的形式...
这个入门实例将引导我们了解如何使用Lucene 3.0版本进行基本的索引和搜索操作。以下是对Lucene 3.0关键知识点的详细讲解: 1. **Lucene的架构**: Lucene的核心组件包括文档(Document)、字段(Field)、索引...
**Lucene 3.0 全文检索入门实例** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了一个高级、灵活的搜索功能框架,允许开发者在自己的应用中轻松地集成全文检索功能。本文将重点介绍如何使用 ...
lucene3.0 中文分词器, 庖丁解牛
《Lucene 3.0 原理与代码分析完整版》是一本深入解析Lucene 3.0搜索引擎库的专业书籍。Lucene是Apache软件基金会的开源项目,它为Java开发者提供了一个高性能、全文检索的工具包,广泛应用于各种信息检索系统。这...
这里的"lucene3.0核心jar包"是 Lucene 的一个重要版本,发布于2009年,为当时的开发人员提供了构建全文搜索引擎的基础框架。 在 Lucene 3.0 中,以下几个关键知识点值得关注: 1. **索引结构**:Lucene 使用倒排...
**二、Lucene 3.0 的主要特性** 1. **更高效的搜索**:Lucene 3.0通过优化搜索算法和数据结构,提高了搜索速度。例如,使用了改进的位向量技术,使得布尔查询更快。 2. **多线程支持**:在3.0版本中,Lucene增强了...
本文将深入探讨Lucene3.0版本,结合“庖丁解牛”的精神,对其实现机制进行细致的剖析,并结合索引搜索程序的实例,帮助读者理解和应用这一强大的工具。 一、Lucene3.0概述 Lucene3.0是Apache软件基金会的一个项目...
这里我们主要聚焦于`lucene3.0`版本,该版本在当时是Lucene的一个重要里程碑,引入了许多改进和新特性。 1. **索引构建**: 在Lucene3.0中,索引是数据检索的基础。它通过将文本数据转换为倒排索引来实现快速查询...
lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的