创建index
/**<p>描述:使用最新版Lucene3.5.0的代码示例。</p><p>功能:搜索指定文件夹下的html文件,创建索引。</p>
* V Lucene 3.5
* 创建索引
*/
public static void createIndex(){
File indexDir = new File(LUCENEINDEX);
File dataDir = new File(LUCENEDATA);
Analyzer luceneAnalyzer = new StandardAnalyzer(Version.LUCENE_35);
File[] dataFiles = indexDir.listFiles();
IndexWriter indexWriter = null;
try {
/**
* indexWriter = new IndexWriter(SimpleFSDirectory.open(dataDir),luceneAnalyzer, true,IndexWriter.MaxFieldLength.LIMITED);
* 在最新版中这种方式已被不使用。
* 现在使用下面的方式创建indexWriter
*/
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_35, luceneAnalyzer);
indexWriter = new IndexWriter(SimpleFSDirectory.open(dataDir), indexWriterConfig);
long startTime = new Date().getTime();
//注意:filed实例在多次添加的时候可以重用,节约构造field实例的时间。
Field f1 = new Field("name", "", Field.Store.YES, Field.Index.NOT_ANALYZED) ;
Field f2 = new Field("path", "", Field.Store.YES, Field.Index.NOT_ANALYZED) ;
List<FilePojo> result = tree(indexDir);
for (FilePojo po : result) {
String name = po.getName();
String path = po.getPath();
try {
System.out.println("Indexing file: " + path);
Document doc = new Document();
f1.setValue(name);
doc.add(f1);
f2.setValue(path);
doc.add(f2);
indexWriter.addDocument(doc);
} catch (IOException e) {
e.printStackTrace();
}
}
//查看IndexWriter里面有多少个索引
System.out.println("numDocs:"+indexWriter.numDocs());
indexWriter.commit();
long endTime = new Date().getTime();
System.out.println("耗时:" + (endTime - startTime));
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
indexWriter.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
搜索index
/**
* V Lucene 3.5
* 搜索索引
*/
public static void readIndex(){
IndexSearcher indexSearch = null;
try {
//保存索引文件的地方
Directory dir = new SimpleFSDirectory(new File(LUCENEDATA));
/**
* indexSearch = new IndexSearcher(dir);<被弃用>
*/
indexSearch = new IndexSearcher(IndexReader.open(dir));
//创建QueryParser对象,第一个参数表示Lucene的版本,第二个表示搜索Field的字段,第三个表示搜索使用分词器
QueryParser queryParser = new QueryParser(Version.LUCENE_35,
"name", new StandardAnalyzer(Version.LUCENE_35));
String key = "tESt.html";
//生成Query对象
Query query = queryParser.parse(key);
/**
* 搜索结果 TopDocs里面有scoreDocs[]数组,里面保存着索引值
* API: Finds the top n hits for query
*/
TopDocs hits = indexSearch.search(query, 10);
//hits.totalHits表示一共搜到多少个
System.out.println("共搜索到"+hits.totalHits+"个 '"+key+"'");
//循环hits.scoreDocs数据,并使用indexSearch.doc方法把Document还原,再拿出对应的字段的值
for (ScoreDoc sdoc : hits.scoreDocs) {
Document doc = indexSearch.doc(sdoc.doc);
System.out.println(doc.get("path"));
}
indexSearch.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
System.out.println("There is no index files...");
} catch (ParseException e) {
e.printStackTrace();
}
}
其他示例:
http://liuzidong.iteye.com/blog/1316940
分享到:
相关推荐
《深入理解Lucene 3.5:官网源代码解析》 Lucene,作为一个开源全文搜索引擎库,被广泛应用于各类信息检索系统中。它的3.5版本是其发展历程中的一个重要里程碑,提供了强大的搜索功能和高效的索引机制。在这个版本...
在这个版本中,开发者可以找到关于索引构建、查询解析、搜索优化等多个方面的源代码实现。以下是对这个版本中一些关键知识点的详细说明: 1. **索引结构**:Lucene的核心在于其高效的倒排索引结构。在源码中,你...
5. **其他组件**: 除了上述组件,Lucene 3.5还可能包含了其他实用工具,如倒排索引构建工具、性能测试工具、示例代码等,帮助开发者更好地理解和使用Lucene。 使用Lucene 3.5时,开发者需要注意的是,虽然这是一个...
lucene3.5 IKAnalyzer3.2.5 实例中文分词通过,目前在网上找的lucene 和IKAnalyzer 的最新版本测试通过。内含:示例代码,以及最新jar包。 lucene lucene3.5 IKAnalyzer IKAnalyzer3.2.5 jar 中文 分词
luke3.5 可查看lucene3.5索引
《Lucene 3.5:创建、增删改查详解》 Lucene 是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发。在3.5版本中,Lucene 提供了强大的文本分析和索引功能,以及对文档的高效检索。本文将详细介绍如何在...
本篇文章将围绕“lucene3.5全文检索案例lucene+demo”,详细讲解Lucene 3.5的核心概念、关键功能以及如何通过实例进行操作。 一、Lucene 3.5核心概念 1. 文档(Document):Lucene中的最小处理单元,相当于数据库...
《Lucene3.5实例详解:构建全文搜索引擎》 Apache Lucene是一个开源的全文检索库,为Java开发者提供了强大的文本搜索功能。在本实例中,我们将深入探讨如何使用Lucene 3.5版本来构建一个基本的全文搜索引擎,主要...
《深入剖析Lucene 3.5源码:揭示搜索引擎核心技术》 Lucene 3.5是Apache Lucene项目的一个重要版本,它是一个高性能、全文本搜索库,为开发者提供了强大的文本搜索功能。作为开源软件,Lucene的源码对学习和理解...
lucene3.5高亮
8. **高亮显示(Highlighting)**: Lucene 提供了文本片段高亮的功能,可以在搜索结果中突出显示匹配的部分。 9. **内存索引(In-memory Indexing)与磁盘索引(Disk-based Indexing)**: Lucene 支持两种索引方式...
chm格式的Lucene帮助文档,Lucene3.5
《Lucene 3.5中文分词案例解析》 Lucene是一个开源的全文搜索引擎库,广泛应用于各种信息检索系统中。在3.5版本中,Lucene已经支持了中文分词,这对于处理中文文档和搜索需求显得尤为重要。本文将深入探讨Lucene ...
《深入探索Lucene 3.5:学习研究报告》 Lucene 3.5是一个重要的版本更新,它在2011年11月26日发布,为搜索引擎开发者提供了更高效、更稳定的功能。该版本在性能优化、新特性和错误修复上取得了显著的进步。 首先,...
《Lucene 3.5 学习笔记》 在信息技术高速发展的今天,搜索引擎技术成为了信息检索的核心工具。Apache Lucene,作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene 3.5版本的相关知识...
在本文中,我们将深入探讨 Lucene 3.5 API,这是一个相对早期但仍然具有重要参考价值的版本。 ### 一、Lucene 的核心组件 1. **Analyzer**: 分析器是 Lucene 的关键组件,负责将输入的文本分解成可索引的词元...
在“关于lucene3.5的使用”这个主题中,我们将深入探讨Lucene 3.5的关键特性、核心组件以及如何通过实例进行应用。首先,我们需要了解以下几个核心概念: 1. **索引(Index)**:Lucene 的工作基于索引,就像书籍的...
在本篇文章中,我们将深入探讨 Lucene 3.5 版本的 API,尽管它是英文版,但其丰富的功能和详细文档使其对开发者极具价值。 1. **Lucene 的基本概念** - **索引(Index)**:Lucene 使用倒排索引(Inverted Index)...
Lucene3.5视频教程(内含分享链接) 一共50集, 包含各部分讲解及源码
solr_lucene3.5_lukeall-3.5.0.jar.zip