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

lucene入门学习(一)

 
阅读更多
public class LuceneUtil {
	/**
	 * 创建索引
	 * @throws IOException 
	 */
	public void index() {
		//2.创建IndexWriter(用来添加索引)
		IndexWriter indexWriter = null;
		try {
			//1.创建Directory
//			Directory directory = new RAMDirectory();   创建在内存中
			Directory directory = FSDirectory.open(new File("D:/workspace/Lucence/lucene"));  //创建在硬盘上
			
			//2.创建IndexWriter
			Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);   //创建标准的分词器
			IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_36,analyzer);
			indexWriter = new IndexWriter(directory,iwc);
			
			//3.创建Document对象(一个document对象就是一个索引)
			Document document = null;
			
			//4.为Document添加Field(位document对象添加搜索的内容)
			File f = new File("D:/workspace/Lucence/document");
			for(File file : f.listFiles()) {
				document = new Document();
				document.add(new Field("content",new FileReader(file)));   //内容搜索
				//
				document.add(new Field("filename",file.getName(),Field.Store.YES,Field.Index.NO));
				document.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,Field.Index.NO));
				//把文档添加到索引中
				indexWriter.addDocument(document);
			}
			//5.通过IndexWriter添加文档到索引中
		} catch(Exception e) {
			
		} finally {
			try {
				indexWriter.close();
			} catch (CorruptIndexException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 搜索
	 */
	public void search() {
		try {
			//1.创建Directory
			Directory directory = FSDirectory.open(new File("D:/workspace/Lucence/lucene"));
			
			//2.创建IndexReader
			IndexReader reader = IndexReader.open(directory);
			
			//3.根据IndexReader创建IndexSearch
			IndexSearcher search = new IndexSearcher(reader);
			
			//4.创建搜索的Query
			//创建parser要确定搜索的内容
			QueryParser parser = new QueryParser(Version.LUCENE_36,"content",new StandardAnalyzer(Version.LUCENE_36));
			Query query = parser.parse("s h e l l");//搜索内容(content)包含java的文档
			
			//5.根据search搜索并且返回TopDocs
			TopDocs tds = search.search(query, 10);
			
			//6.根据TopDocs获取scoreDocs对象
			ScoreDoc[] sds = tds.scoreDocs;
			for (ScoreDoc scoreDoc : sds) {
				//7.根据search和scoreDocs对象获取具体的Document对象
				Document d = search.doc(scoreDoc.doc);
				//8.根据Document对象获取需要的值
				System.out.println(d.get("filename"));;
			}
			//9.关闭reader
			reader.close();
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}

 

分享到:
评论

相关推荐

    Lucene入门学习文档

    **Lucene入门学习文档** **一、什么是Lucene** Lucene是Apache软件基金会下的一个开源全文检索库,它提供了一个高性能、可扩展的信息检索服务。Lucene最初由Doug Cutting开发,现在已经成为Java社区中事实上的标准...

    Lucene3.3.0学习Demo

    这个"Lucene3.3.0学习Demo"是针对这一版本进行的实践教学资源,旨在帮助开发者更好地理解和使用Lucene。 首先,我们来看看Lucene的基本工作流程: 1. **分词**:Lucene通过Analyzer处理输入的文本,将其分解为一...

    lucene基础学习.pdf

    lucene基础学习.pdf

    Lucene的的学习资料及案例

    2. **分词**: 在建立索引前,Lucene会使用分析器(Analyzer)对文本进行分词,分词结果作为索引的基础。 3. **文档与字段**: 文档是Lucene处理的基本单位,由多个字段(Field)组成。每个字段有其特定的属性,如...

    Lucene.net学习帮助文档

    **一、Lucene.net基础** Lucene.net提供了对文本数据的索引和搜索功能,它通过分词、建立倒排索引等技术,使得文本数据可以被快速检索。在.NET环境中,开发者可以通过Lucene.net API创建索引,添加、删除和更新文档...

    lucene 入门

    `lucene入门小实例.txt` 文件中可能包含了一个简单的Lucene使用示例,例如: 1. 创建 `Directory` 对象,比如使用 `FSDirectory.open()` 打开一个文件系统的目录来存储索引。 2. 实例化 `Analyzer`,如使用 `...

    lucene3.6的入门案例

    通过对这个案例的学习,你可以掌握 Lucene 的基本操作,为进一步深入学习和应用打下基础。 在实际项目中,你可能需要考虑更多细节,如错误处理、多线程索引、优化索引性能、处理大量数据等。此外,随着 Lucene 版本...

    lucene入门小例子

    这个“lucene入门小例子”很可能是为了帮助初学者理解并掌握Lucene的基本用法而设计的一系列示例代码。 Lucene的核心概念包括索引、文档、字段和查询。首先,你需要理解索引的概念,它类似于传统数据库中的索引,但...

    lucene学习

    Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a) 创建索引 b) 查询索引 3、配置开发环境 4、创建索引库 5、查询索引库 6、分析器的分析过程 a) 测试分析器的分词...

    lucene基础学习笔记&源码

    **Lucene 基础学习笔记与源码分析** **一、Lucene 概述** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发并维护。它是一个 Java 开发的开源项目,被广泛应用于各种搜索引擎的构建,支持多种编程...

    lucene学习资料收集

    1. **全文检索基础**:Lucene的核心功能是实现全文检索,它能够对文本数据进行索引,使得用户可以通过关键词快速找到相关文档。这涉及到分词、词频统计、倒排索引等关键技术。 2. **分词器(Tokenizer)**:Lucene...

    lucene4.8学习资料和案例

    本文将深入探讨Lucene 4.8的核心特性、使用方法以及相关的学习资料和案例,旨在帮助读者更好地理解和应用这一技术。 一、Lucene 4.8基础概念 1. 文档(Document):Lucene中的基本单位,用于存储信息,可以理解为...

    Lucene5学习之创建索引入门示例

    **Lucene5学习之创建索引入门示例** 在IT领域,搜索引擎的开发与优化是一项关键技术,而Apache Lucene作为一款高性能、全文本搜索库,是许多开发者进行文本检索的首选工具。本文将深入探讨如何使用Lucene5来创建一...

    lucene学习pdf2

    "lucene学习pdf2" 提供的文档,无疑是对Lucene深入理解的一把钥匙,它涵盖了Lucene的核心概念、操作流程以及高级特性。 首先,Lucene的基础知识是必不可少的。Lucene的核心在于索引和搜索,它将非结构化的文本数据...

    lucene入门学习

    【Lucene 入门学习】 Lucene 是一个高性能、全文本搜索库,它提供了一个简单但功能强大的应用程序编程接口(API),使得开发人员能够轻松地在他们的应用中实现全文搜索功能。Lucene 广泛应用于各种场景,如论坛、...

    Lucene学习笔记(一)Lucene入门实例

    NULL 博文链接:https://kylinsoong.iteye.com/blog/719415

    Lucene-2.0学习文档

    本篇文章将围绕"Lucene-2.0学习文档"的主题,结合Indexer.java、MyScoreDocComparator.java和MySortComparatorSource.java这三个关键文件,深入探讨Lucene的核心概念和实际应用。 首先,我们来看`Indexer.java`。这...

    Lucene学习源码.rar

    本文将主要围绕Java Lucene进行深入探讨,并基于提供的“Lucene学习源码.rar”文件中的“Lucene视频教程_讲解部分源码”展开讨论。 一、Lucene核心概念 1. 文档(Document):Lucene中的基本单位,用于存储待检索...

    Lucene 3.6 学习笔记

    第一章 LUCENE基础 2 1.1 索引部分的核心类 2 1.2 分词部分的核心类 2 1.3 搜索部分的核心类 2 第二章 索引建立 3 2.1 创建Directory 3 2.2 创建Writer 3 2.3 创建文档并且添加索引 4 2.4 查询索引的基本信息 5 2.5 ...

    lucene学习入门程序

    同时,你也将接触到Lucene的主要API和概念,为进一步深入学习和应用Lucene打下基础。在实践中,你可以尝试不同的Analyzer,调整搜索参数,优化性能,或者实现更复杂的功能,如多字段搜索、拼音搜索等。

Global site tag (gtag.js) - Google Analytics