`
bearjava
  • 浏览: 82252 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Lucene检索入门

阅读更多
Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.
/**
 * 这个实例包含了lucene所有核心用法 
 */
public class LuceneTest {

	public static void main(String[] args) {
		try {
			LuceneTest luceneTest = new LuceneTest();
			// 创建索引
			luceneTest.index();
			// 在索引所在目录下搜索"China golden medal"
			luceneTest.search("golden medal");
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("ok");
	}

	public void index() throws Exception {
		/* 创建索引初始化,执行这些语句将创建或清空d:\\save\\目录下所有索引 */
		IndexWriter writer1 = new IndexWriter("d:\\save\\",
				new StandardAnalyzer(), true);
		writer1.close();

		/*
		 * 往创建的初始化索引中添加索引内容,StandardAnalyzer表示用lucene自带的标准分词机制,
		 * false表示不覆盖原来该目录的索引,细心的读者可能已经发现, 这句话和上面的那句就这个false不一样
		 */
		IndexWriter writer2 = new IndexWriter("d:\\save\\",
				new StandardAnalyzer(), false);
		/* 创建一份文件 */
		Document doc1 = new Document();
		/*
		 * 创建一个域ArticleTitle,并往这个域里面添加内容 "Field.Store.YES"表示域里面的内容将被存储到索引
		 * "Field.Index.TOKENIZED"表示域里面的内容将被索引,以便用来搜索
		 */
		Field field1 = new Field("ArticleTitle", "Beijing 2008 Olympic", Field.Store.YES,
				Field.Index.TOKENIZED);
		/* 往文件里添加这个域 */
		doc1.add(field1);
		/* 同理:创建另外一个域ArticleText,并往这个域里面添加内容 */
		Field field2 = new Field("ArticleText", "This is an outstanding Olympic game......",
				Field.Store.YES, Field.Index.TOKENIZED);
		doc1.add(field2);
		// 在这里还可以添加其他域
		/* 添加这份文件到索引 */
		writer2.addDocument(doc1);

		/* 同理:创建第二份文件 */
		Document doc2 = new Document();
		field1 = new Field("ArticleTitle", "China get the merit from World", Field.Store.YES,
				Field.Index.TOKENIZED);
		doc2.add(field1);
		field2 = new Field("ArticleText", "China is the first on golden medals........",
				Field.Store.YES, Field.Index.TOKENIZED);
		doc2.add(field2);

		writer2.addDocument(doc2);

		// 在这里可以添加其他文件

		/* 关闭 */
		writer2.close();
	}

	public void search(String serchString) throws Exception {
		/* 创建一个搜索,搜索刚才创建的d:\\save\\目录下的索引 */
		IndexSearcher indexSearcher = new IndexSearcher("d:\\save\\");
		/* 在这里我们只需要搜索一个目录 */
		IndexSearcher indexSearchers[] = { indexSearcher };
		/* 我们需要搜索两个域"ArticleTitle", "ArticleText"里面的内容 */
		String[] fields = { "ArticleTitle", "ArticleText" };
		/* 下面这个表示要同时搜索这两个域,而且只要一个域里面有满足我们搜索的内容就行 */
		BooleanClause.Occur[] clauses = { BooleanClause.Occur.SHOULD,
				BooleanClause.Occur.SHOULD };
		/*
		 * MultiFieldQueryParser表示多个域解析,
		 * 同时可以解析含空格的字符串,如果我们搜索"中国 金牌",根据前面的索引,显然搜到的是第二份文件
		 */
		Query query = MultiFieldQueryParser.parse(serchString, fields, clauses,
				new StandardAnalyzer());
		/* Multisearcher表示多目录搜索,在这里我们只有一个目录 */
		MultiSearcher searcher = new MultiSearcher(indexSearchers);
		/* 开始搜索 */
		Hits h = searcher.search(query);
		/* 把搜索出来的所有文件打印出来 */
		for (int i = 0; i < h.length(); i++) {
			/* 打印出文件里面ArticleTitle域里面的内容 */
			System.out.println(h.doc(i).get("ArticleTitle"));
			/* 打印出文件里面ArticleText域里面的内容 */
			System.out.println(h.doc(i).get("ArticleText"));
		}
		/* 关闭 */
		searcher.close();
	}
}
分享到:
评论

相关推荐

    Lucene 简单入门程序实例

    标题与描述:“Lucene简单入门程序实例”这一标题与描述明确指出文章将引导读者通过一个实际的示例来了解和掌握Lucene的基本操作。Lucene是一个高性能、全功能的文本搜索引擎库,它允许用户对文档进行索引和搜索。本...

    Lucene-入门

    **标题:“Lucene-入门”** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发并维护。它是Java编写的一个开源项目,被广泛应用于构建搜索引擎或者在大型数据集上进行全文检索。Lucene提供了丰富的搜索...

    lucene 入门

    **Lucene 入门** Lucene 是一个高性能、全文本搜索库,由Apache软件基金会开发。它是Java平台上的一个开源项目,广泛应用于各种搜索引擎的构建,包括网站内部搜索、数据库索引等。Lucene 提供了强大的文本分析、...

    lucene3.0全文检索入门实例

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

    最新全文检索 lucene-5.2.1 入门经典实例

    《最新全文检索 Lucene-5.2.1 入门经典实例》 Lucene是一个开源的全文检索库,由Apache软件基金会开发,广泛应用于各种信息检索系统。在5.2.1版本中,Lucene提供了更为高效和强大的搜索功能,为开发者提供了构建...

    读书笔记:Lucene全文检索入门项目 Java实现Maven项目 Elasticsearch 基础实战.zip

    读书笔记:Lucene全文检索入门项目 Java实现Maven项目 Elasticsearch 基础实战

    Lucene全文检索入门项目 Java实现Maven项目 Elasticsearch 基础实战.zip

    【标题】"Lucene全文检索入门项目 Java实现Maven项目 Elasticsearch 基础实战" 提供了一个学习如何在Java环境中运用全文检索技术的起点。这个项目涵盖了两个主要的开源工具:Lucene和Elasticsearch,它们都是业界...

    全文检索 lucene-5.2.1 入门Eclipse工程实例

    Eclipse工程文件,全文检索 lucene-5.2.1 入门Eclipse工程实例,福利放送,与lucene3结果比对

    Lucene2.4入门总结

    **Lucene 2.4 入门指南** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了高级文本检索功能,广泛用于构建搜索引擎和其他需要高效全文检索能力的应用。本文将重点介绍 Lucene 2.4 版本的...

    Lucene 的入门 实例 代码

    【Lucene 入门教程】 Lucene 是一个由Apache软件基金会开发的开源全文检索引擎工具包,它并非一个完整的搜索引擎,而是提供了一个强大的架构,允许开发人员轻松地在他们的应用程序中集成全文检索功能。Lucene 支持...

    Lucene 4.8全文检索引擎入门示例文档

    《Lucene 4.8 全文检索引擎入门详解》 Lucene 是一款开源的全文检索库,由 Apache 软件基金会维护。在版本 4.8 中,Lucene 提供了强大的文本分析、索引构建和搜索功能,使得开发者能够轻松地在应用程序中集成高效的...

    lucene3.6入门实例教程

    《Lucene 3.6 入门实例教程》是一份专...总之,《Lucene 3.6 入门实例教程》是学习Lucene的理想资源,它将理论知识与实践操作紧密结合,使开发者能够快速掌握全文检索技术,为构建高效、精准的搜索应用打下坚实的基础。

    lucene学习入门程序

    **Lucene学习入门程序** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它是Java编写,可以被集成到各种应用中,提供强大的文本检索功能。本程序是针对初学者设计的,旨在帮助开发者快速理解并...

    lucene索引入门[归类].pdf

    lucene索引入门 Lucene 是一个基于 Java 的全文搜索引擎库,提供了一个简单、灵活、可扩展的搜索解决方案。Lucene 的核心组件包括索引模块、检索模块、语言分析器、查询分析器、存储结构等。 1. 索引模块(Index)...

    lucene入门小例子

    Lucene是中国大百科全书式的全文检索库,它在Java世界中扮演着核心角色,为开发者提供了强大的...总之,Lucene是一个强大且灵活的全文检索工具,通过这个入门小例子,你可以逐步揭开其神秘的面纱,踏入文本搜索的世界。

    lucene.net+完全入门教程

    Lucene.Net是一个基于Apache Lucene的开源全文搜索引擎库,它被移植到.NET Framework平台上,为.NET开发者提供了强大的文本检索和分析能力。Lucene最初由Doug Cutting创建,是Java社区中的一个标志性项目,而Lucene...

    Lucene3.0入门实例含jar包

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

    Lucene 2.4 入门例子

    **Lucene 2.4 入门例子** Lucene 是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了强大的搜索功能,被广泛应用于各种应用中的信息检索。在这个入门例子中,我们将探讨Lucene 2.4版本的一些关键特性和...

    全文检索系统(Lucene)

    `LuceneDemoSrc`可能是包含一个Lucene入门示例项目的压缩文件,它可能包括以下部分: 1. **源码**:展示了如何创建和使用Lucene索引,以及如何执行搜索。 2. **配置文件**:可能包含Analyzer的配置,用于定制化分词...

    [Lucene] Lucene入门心得

    【Lucene】Lucene入门心得 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个简单的API,使得开发者可以方便地在自己的应用程序中集成全文检索功能。...

Global site tag (gtag.js) - Google Analytics