`

Lucene_demo00_IndexCURD

阅读更多
Lucene_demo00_IndexCURD

索引库创建、查询 、修改 、删除


/**
 * @see 创建索引库,把article对象加入到索引库中
 * @see 查询 、修改 、删除
 */
public class ArticleIndexCUDR {
	/**
	 * 创建索引库
	 * @throws Exception
	 */
	@Test
	public void testCreateIndex() throws Exception {
		IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory, LuceneUtils.analyzer, MaxFieldLength.LIMITED);
		Article article = new Article();
		article.setId(1L);
		article.setTitle("NBA总冠军");
		article.setContent("LBJ和韦德能带领热火在2013赛季拿到NBA总冠军吗");
		Document doc = DocumentUtils.article2Document(article);
		indexWriter.addDocument(doc);
		indexWriter.close();// 每次都要关闭
	}

	/**
	 * 批量创建索引库
	 * @throws Exception
	 */
	@Test
	public void testCreateIndexBatch() throws Exception {
		IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory, LuceneUtils.analyzer, MaxFieldLength.LIMITED);
		for (int i = 1; i <= 25; i++) {
			Article article = new Article();
			article.setId(Long.parseLong("" + i));
			article.setTitle("NBA总冠军");
			article.setContent("LBJ和韦德能带领热火在2013赛季拿到NBA总冠军吗");
			Document doc = DocumentUtils.article2Document(article);
			indexWriter.addDocument(doc);
		}
		indexWriter.close();
	}

	/**
	 * 查找索引
	 * @throws Exception
	 */
	@Test
	public void testSearchIndex() throws Exception {
		IndexSearcher indexSearcher = new IndexSearcher(LuceneUtils.directory);
		QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_30, new String[] { "title", "content" }, LuceneUtils.analyzer);
		Query query = queryParser.parse("NBA");
		TopDocs topDocs = indexSearcher.search(query, 25);
		int count = topDocs.totalHits;// 总的抓取命中的记录数
		ScoreDoc[] scoreDocs = topDocs.scoreDocs;
		List<Article> articleList = new ArrayList<Article>();
		// 将查询到的索引添加到articleList中
		for (int i = 0; i < scoreDocs.length; i++) {
			int index = scoreDocs[i].doc;
			Document document = indexSearcher.doc(index);
			Article article = DocumentUtils.document2Article(document);
			articleList.add(article);
		}

		// 输出查询到的内容
		for (Article article : articleList) {
			System.out.println(article.getId());
			System.out.println(article.getTitle());
			System.out.println(article.getContent());
		}
	}

	/**
	 * 删除操作是针对关键词对象进行删除的,封装的关键词在目录库中必须存在才能删除
	 * @throws Exception
	 */
	@Test
	public void deleteIndex() throws Exception {
		IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory, LuceneUtils.analyzer, MaxFieldLength.LIMITED);
		Term term = new Term("title", "总冠军");// Term 关键词对象
		indexWriter.deleteDocuments(term);
		indexWriter.close();
	}

	/**
	 * 修改是先删除后增加
	 * @throws Exception
	 */
	@Test
	public void testUpdateIndex() throws Exception {
		IndexWriter indexWriter = new IndexWriter(LuceneUtils.directory, LuceneUtils.analyzer, MaxFieldLength.LIMITED);
		Term term = new Term("title", "总冠军");
		Article article = new Article();
		article.setId(1L);
		article.setTitle("热火总冠军");
		article.setContent("热火在2013赛季拿到NBA总冠军");
		Document doc = DocumentUtils.article2Document(article);
		indexWriter.updateDocument(term, doc);// 第一个参数:term作用是删除、第二个参数:documet作用是增加
		indexWriter.close();
	}
}

分享到:
评论

相关推荐

    lucene_demo例子

    在"lucene_demo"这个压缩包中,很可能包含了一些示例代码或者项目,用于演示如何使用Lucene进行实际的文本搜索开发。这些示例通常会涵盖以下几个关键知识点: 1. **安装与配置**:Lucene的下载、构建环境的搭建,...

    vb.net2.0_Lucene_test.rar_lucene_lucene vb.n_lucene.net vb

    标题中的“vb.net2.0_Lucene_test.rar_lucene_lucene vb.n_lucene.net vb”表明这是一个关于使用VB.NET 2.0版本实现Lucene搜索引擎的测试项目。Lucene是一个高性能、全文本搜索库,广泛应用于Java开发,而这里则是将...

    java+lucene)1236.rar_Lucene 搜索_Luncene_lucene_lucene web

    【标题】"java+lucene)1236.rar_Lucene 搜索_Luncene_lucene_lucene web" 提供的信息表明这是一个使用Java和Lucene框架实现的搜索系统,特别是针对公交数据的搜索。Lucene是Apache软件基金会的一个开源全文检索库,...

    lucene_in_action中文版

    lucene_in_action中文版lucene_in_action中文版lucene_in_action中文版lucene_in_action中文版lucene_in_action中文版lucene_in_action中文版

    lucene_cn.jar

    “META-INF”目录则包含了Lucene的相关元数据,如MANIFEST.MF文件,它记录了jar包的基本信息和依赖关系,这对于构建和运行环境的配置至关重要。在部署和运行Lucene_CN.jar时,这些元数据会帮助系统正确地加载和执行...

    ssd.rar_lucene_搜索 lucene_搜索引擎_文本搜索

    **Lucene搜索引擎简介** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的开源搜索引擎框架。它为开发者提供了在应用程序中实现全文索引和搜索功能的基础工具。Lucene的...

    luceneDemo_pure1aa_DEMO_clucene_

    将提供的“luceneDemo”文件加入到项目中,这是DEMO的主要代码。这个DEMO将展示如何使用Clucene的基本操作,包括创建索引、搜索索引等关键步骤。 五、理解DEMO代码 DEMO代码通常包含以下几个部分: 1. **索引创建...

    Lucene资料大全(包括Lucene_in_Action书等)

    标题"Lucene资料大全(包括Lucene_in_Action书等)"表明这是一个包含全面Lucene学习资源的集合,其中最显著的是《Lucene_in_Action》这本书。这是一本广泛认可的关于Apache Lucene的权威指南,通常被简称为LIA,它深入...

    chinese_lucene.rar_Lucene C#_Lucene for .net_PanGu4Lucene_lucene

    《深入理解Lucene C#与.NET环境下的应用实践》 Lucene是一款强大的全文搜索引擎库,最初由Apache软件基金会开发,现已成为Apache Lucene项目的一部分。它提供了高效的索引和搜索功能,广泛应用于各类数据检索系统。...

    lucene_web项目应用实例

    《Lucene Web项目应用实例详解》 在信息技术领域,搜索引擎技术是不可或缺的一部分,Apache Lucene作为一款开源全文搜索引擎库,为开发者提供了强大的文本检索能力。本文将深入探讨一个名为“lucene_web”的项目,...

    Lucene_in_ Action

    Lucene_in_Action english版

    lucenevideao(eddy).rar_Lucene.net a_eddy_lucene_lucene web_luce

    这个名为“lucenevideao(eddy).rar_Lucene.net a_eddy_lucene_lucene web_luce”的资源,包含了一份由Eddy精心制作的Lucene.NET视频教程,以及相关的学习材料,是深入理解和应用Lucene.NET的好帮手。 首先,视频...

    Lucene_in_ Action java search engine.PDF 搜索引擎教程

    Lucene_in_ Action java search engine.PDF 搜索引擎教程

    lucene_jar包

    **Lucene jar包详解** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。这个"lucene_jar包"包含了Lucene的核心组件,是开发者构建搜索功能的基础。在Java开发环境中,jar(Java Archive)包是将...

    JAVA_Lucene_in_Action教程完整版

    ### JAVA_Lucene_in_Action教程知识点概述 #### 一、Lucene简介与背景 - **Lucene的起源**:Lucene最初作为一个私有项目由Doug Cutting创建于1997年末,目的是为了学习Java并尝试创建搜索软件。由于缺乏销售经验,...

    compass_lucene_source

    Compass和Lucene是两个在Java世界中广泛使用的开源搜索引擎技术。它们在处理大量文本数据、提供全文检索功能以及构建高效的信息检索系统方面扮演着重要角色。本文将深入探讨这两个工具,尤其是关于"compass_lucene_...

Global site tag (gtag.js) - Google Analytics