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是Apache软件基金会下的一个开源全文检索库,它提供了一个高性能、可扩展的信息检索服务。Lucene最初由Doug Cutting开发,现在已经成为Java社区中事实上的标准...
这个"Lucene3.3.0学习Demo"是针对这一版本进行的实践教学资源,旨在帮助开发者更好地理解和使用Lucene。 首先,我们来看看Lucene的基本工作流程: 1. **分词**:Lucene通过Analyzer处理输入的文本,将其分解为一...
2. **分词**: 在建立索引前,Lucene会使用分析器(Analyzer)对文本进行分词,分词结果作为索引的基础。 3. **文档与字段**: 文档是Lucene处理的基本单位,由多个字段(Field)组成。每个字段有其特定的属性,如...
**一、Lucene.net基础** Lucene.net提供了对文本数据的索引和搜索功能,它通过分词、建立倒排索引等技术,使得文本数据可以被快速检索。在.NET环境中,开发者可以通过Lucene.net API创建索引,添加、删除和更新文档...
`lucene入门小实例.txt` 文件中可能包含了一个简单的Lucene使用示例,例如: 1. 创建 `Directory` 对象,比如使用 `FSDirectory.open()` 打开一个文件系统的目录来存储索引。 2. 实例化 `Analyzer`,如使用 `...
### 第一章 Lucene 基础 #### 1.1 索引部分的核心类 - `Directory`: 用于存储索引数据的抽象接口,例如FSDirectory(文件系统目录)和RAMDirectory(内存目录)。 - `IndexWriter`: 负责创建、修改和删除索引的主要...
通过对这个案例的学习,你可以掌握 Lucene 的基本操作,为进一步深入学习和应用打下基础。 在实际项目中,你可能需要考虑更多细节,如错误处理、多线程索引、优化索引性能、处理大量数据等。此外,随着 Lucene 版本...
这个“lucene入门小例子”很可能是为了帮助初学者理解并掌握Lucene的基本用法而设计的一系列示例代码。 Lucene的核心概念包括索引、文档、字段和查询。首先,你需要理解索引的概念,它类似于传统数据库中的索引,但...
Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a) 创建索引 b) 查询索引 3、配置开发环境 4、创建索引库 5、查询索引库 6、分析器的分析过程 a) 测试分析器的分词...
**Lucene 基础学习笔记与源码分析** **一、Lucene 概述** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发并维护。它是一个 Java 开发的开源项目,被广泛应用于各种搜索引擎的构建,支持多种编程...
1. **全文检索基础**:Lucene的核心功能是实现全文检索,它能够对文本数据进行索引,使得用户可以通过关键词快速找到相关文档。这涉及到分词、词频统计、倒排索引等关键技术。 2. **分词器(Tokenizer)**:Lucene...
本文将深入探讨Lucene 4.8的核心特性、使用方法以及相关的学习资料和案例,旨在帮助读者更好地理解和应用这一技术。 一、Lucene 4.8基础概念 1. 文档(Document):Lucene中的基本单位,用于存储信息,可以理解为...
Apache Lucene 是一个高效的开源信息检索库,用于在应用程序中提供全文搜索功能。Lucene 最初由 Doug Cutting 开发,如今它是 Apache Jakarta 项目的一部分。它提供了一套简单且强大的接口,可以用于创建和管理索引...
**Lucene5学习之创建索引入门示例** 在IT领域,搜索引擎的开发与优化是一项关键技术,而Apache Lucene作为一款高性能、全文本搜索库,是许多开发者进行文本检索的首选工具。本文将深入探讨如何使用Lucene5来创建一...
"lucene学习pdf2" 提供的文档,无疑是对Lucene深入理解的一把钥匙,它涵盖了Lucene的核心概念、操作流程以及高级特性。 首先,Lucene的基础知识是必不可少的。Lucene的核心在于索引和搜索,它将非结构化的文本数据...
【Lucene 入门学习】 Lucene 是一个高性能、全文本搜索库,它提供了一个简单但功能强大的应用程序编程接口(API),使得开发人员能够轻松地在他们的应用中实现全文搜索功能。Lucene 广泛应用于各种场景,如论坛、...
NULL 博文链接:https://kylinsoong.iteye.com/blog/719415
本篇文章将围绕"Lucene-2.0学习文档"的主题,结合Indexer.java、MyScoreDocComparator.java和MySortComparatorSource.java这三个关键文件,深入探讨Lucene的核心概念和实际应用。 首先,我们来看`Indexer.java`。这...
本文将主要围绕Java Lucene进行深入探讨,并基于提供的“Lucene学习源码.rar”文件中的“Lucene视频教程_讲解部分源码”展开讨论。 一、Lucene核心概念 1. 文档(Document):Lucene中的基本单位,用于存储待检索...