/**
* 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();
}
}
}
// 递归方法
private static List tree(File f) {
File[] childs = f.listFiles();
for (int i = 0; i < childs.length; i++) {
if (childs[i].isDirectory()) {
tree(childs[i]);
}else if(childs[i].isFile() && childs[i].getName().endsWith(".html")){
//执行索引
try {
FilePojo po = new FilePojo();
po.setName(childs[i].getName());
po.setPath(childs[i].getCanonicalPath());
result.add(po);
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
分享到:
相关推荐
1、下载IKAnalyzer2012_u6.zip(最新版) https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ik-analyzer/IKAnalyzer2012_u6.zip 2、由于maven库里没有ik的坐标,所以我们需要手动...
目前最新版本是4.3.1. 它可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的、成熟的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于Apache软件许可 [ASF, License]。同样,Lucene是当前非常流行...
- 下载最新版本的Lucene库。 - 将库文件添加到项目的类路径中。 - 使用Lucene提供的API创建索引、添加文档和执行查询。 #### 5. Hacking Lucene 对于进阶用户而言,Lucene提供了丰富的定制化选项,例如: - **...
<artifactId>paoding-analysis</artifactId> <version>2.0.4-alpha2</version> </dependency> ``` 4. **测试运行** 创建一个简单的Java程序,调用paoding的分词API进行测试,确保环境搭建成功。 **三、核心...
Lucene是一个开源全文搜索引擎库,它提供了高级文本分析和索引功能,使得开发者能够轻松地在应用程序中实现强大的搜索功能。本次我们将围绕“lucene jar包”这一主题,深入探讨Lucene 2.3.1版本的相关知识点。 一、...
Lucene 3.5 API 是该库在2011年发布的一个版本,包含了对当时最新特性和改进的支持。 **核心组件** 1. **索引(Indexing)**: Lucene 的索引过程涉及将文档内容转化为可搜索的形式。它包括分析(Analyzer)步骤,...
总的来说,Lucene.Net 2.3.2是.NET开发人员构建全文搜索引擎的重要工具,尽管它可能不如最新版本那样具备所有现代特性,但在很多场景下仍然足够强大和实用。通过对Lucene.Net的学习和实践,开发者能够构建出高效、...
### 1. Go语言介绍 Go语言,也称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的语言。Go语言的设计目标是提高开发效率,简化并发编程,以及优化程序运行性能。由于其简洁的语法和良好...
在开发过程中,不断学习和掌握新的技术和资源是至关重要的。以下是一些常用的学习资源网站,涵盖了多种编程语言、框架和工具,帮助你提升技能和效率。 1. **Go语言**: - **Golang123Go语言中文网**:提供Go语言的...
整本书通过对Solr核心知识的介绍和进阶内容的讨论,为读者提供了一套全面的Solr学习资源。无论是初学者还是需要进一步深化Solr应用的专业人士,都能从中获益。在快速发展的技术领域,例如社交媒体、云计算、移动应用...
1. **语法基础**:介绍Java的基本语法,包括程序结构、注释、标识符等。 2. **常量与变量**:讲解常量与变量的概念、声明方式以及它们在程序中的作用。 3. **数据类型**:详细介绍Java中的各种数据类型(如基本类型...
它基于Lucene库构建,提供了一种分布式、RESTful风格的搜索和数据分析引擎,广泛应用于日志分析、网站搜索、业务监控等领域。 在描述中同样只有简短的"es",我们可以假设这指的是Elasticsearch的相关内容,但由于...