现在网上很多例子都是基于老版本的Lucene做得例子,我给改了一下,这个例子是基于lucene 2.4的,希望能有所帮助
-
packageutils;
-
importjava.io.File;
-
importjava.io.FileReader;
-
importjava.io.IOException;
-
importjava.io.Reader;
-
importorg.apache.lucene.analysis.standard.StandardAnalyzer;
-
importorg.apache.lucene.document.Document;
-
importorg.apache.lucene.document.Field;
-
importorg.apache.lucene.index.IndexWriter;
-
publicclassIndexer{
-
publicintindex(StringindexDir,StringdataDir)throwsIOException
- {
-
FileindexDirFile=newFile(indexDir);
-
FiledataDirFile=newFile(dataDir);
-
intnumIndexed=index(indexDirFile,dataDirFile);
-
return0;
- }
-
privateintindex(FileindexDirFile,FiledataDirFile)throwsIOException{
-
if(!dataDirFile.exists()||!dataDirFile.isDirectory())
- {
-
thrownewIOException(dataDirFile+"doesnotexistorisnotadirectory");
- }
-
IndexWriterwriter=newIndexWriter(indexDirFile,newStandardAnalyzer(),true);
-
writer.setUseCompoundFile(false);
- indexDirectory(writer,dataDirFile);
-
intnumIndexed=writer.docCount();
- writer.optimize();
- writer.close();
-
returnnumIndexed;
- }
-
privatevoidindexDirectory(IndexWriterwriter,FiledataDirFile)throwsIOException{
- File[]files=dataDirFile.listFiles();
-
for(inti=0;i<files.length;i++)
- {
- Filef=files[i];
-
if(f.isDirectory())
- {
- indexDirectory(writer,f);
-
}elseif(f.getName().endsWith(".java") || f.getName().endsWith(".txt"))//需要索引的文件类型
- {
- indexFile(writer,f);
- }
- }
- }
-
privatevoidindexFile(IndexWriterwriter,Filef)throwsIOException{
-
if(f.isHidden()||!f.exists()||!f.canRead())
- {
-
return;
- }
-
System.out.println("Indexing"+f.getCanonicalPath());
-
Documentdoc=newDocument();
-
ReadertxtReader=newFileReader(f);
-
doc.add(newField("path",f.getCanonicalPath(),Field.Store.YES,Field.Index.UN_TOKENIZED));
-
doc.add(newField("contents",txtReader));
-
doc.add(newField("name",f.getName(),Field.Store.YES,Field.Index.UN_TOKENIZED));
- writer.addDocument(doc);
- }
- }
调用的代码如下:
-
StringfilesRepoDir="C:/workspace-2.0";
-
StringindexDir="C:/apache-tomcat-6.0.18/webapps/index";
-
Indexerindexer=newIndexer();
- indexer.index(indexDir,filesRepoDir);
分享到:
相关推荐
本篇文章将详细介绍如何使用Lucene3.0来创建索引,并通过一个具体的例子来演示整个过程。 #### 一、Lucene3.0简介 Lucene是一款高性能、全功能的全文搜索引擎库。它为开发者提供了构建搜索应用所需的所有基本工具...
- 使用Lucene提供的API来创建索引。 - 需要创建一个`IndexWriter`对象,指定索引存储的位置及索引的配置选项。 - 对于每个XML文档中的元素,可以创建一个`Document`对象,并将其添加到`IndexWriter`中。 3. **...
本教程主要探讨的是如何利用Lucene进行索引优化,特别是通过多线程和处理多个目录来提高索引创建效率。 首先,我们需要理解Lucene的索引原理。Lucene将文档分解为词项(tokens),并对每个词项创建倒排索引。倒排...
以上就是使用Lucene5创建索引的基本步骤。在实际应用中,我们可能还需要实现更复杂的功能,如多字段搜索、评分机制、高亮显示等。同时,Lucene还提供了工具类,如IndexReader和IndexSearcher,用于读取和搜索已建立...
描述中提到的“对SQL Server数据库表,用多线程,高速创建索引”,是指在构建Lucene.NET索引时,采用了多线程技术来提升性能。这种做法可以充分利用多核处理器的计算能力,将数据处理任务分散到多个线程中,从而加快...
标题中的“Lucene对本地文件多目录创建索引”指的是使用Apache Lucene库来构建一个搜索引擎,该搜索引擎能够索引本地计算机上的多个文件目录。Lucene是一个强大的全文搜索库,它允许开发者在Java应用程序中实现高级...
Lucene创建索引步骤: 1、创建Directory(索引位置) 2、创建IndexWrite(写入索引) 3、创建Document对象 4、为Document添加Field(相当于添加属性:类似于表与字段的关系) 5、通过IndexWriter添加文档到索引中
创建索引 创建Lucene索引的步骤包括: 1. **初始化Directory**:选择存储索引的目录,如FSDirectory(文件系统)、RAMDirectory(内存)等。 2. **创建IndexWriter**:配置IndexWriter实例,指定Directory、...
- **首次创建索引**:首先,我们需要遍历整个数据源,创建每个文档的实例,然后将这些文档添加到Lucene的索引writer中。完成这一步后,就会生成一个完整的初始索引。 - **监控数据变更**:为了实现增量索引,我们...
"修改wcp开源代码,Lucene为附件创建索引"这个项目就是针对这个问题进行的一个优化实践。WCP(Web Content Platform)可能是一个用于管理和检索网络内容的开源平台,而Lucene是一个强大的全文搜索引擎库,广泛应用于...
首先,让我们了解如何利用Lucene 4.7.2创建索引。创建索引是全文检索的基础,它涉及将文本数据结构化为Lucene可以理解和查询的形式。开发者可以通过Analyzer类来处理输入的文本,进行分词、去除停用词等预处理步骤。...
创建索引 一、创建词法分析器 二、创建索引存储目录 三、创建索引写入器 四、将内容存储到索引 关键字查询 一、创建索引存储目录读取器 二、创建索引搜索器 三、解析查询 四、获取结果
java创建Lucene索引
Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能. 不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,...
在Eclipse环境中运用java,Lucene建索引及查询关键字
本文将重点介绍如何使用Lucene创建索引以及如何基于这些索引进行高效的搜索。 #### 二、创建索引 ##### 2.1 准备工作 在开始之前,我们需要做一些准备工作: - **安装Java环境**:Lucene基于Java开发,因此首先...
// 创建索引器 IndexWriter indexWriter = new IndexWriter(directory, config); // 创建文档 Document doc = new Document(); doc.add(new Field("title", "Lucene索引器实例", Field.Store.YES, Field....
假设有一家互联网公司正在开发一个新的搜索引擎产品,他们选择使用Lucene作为核心的索引构建技术。为了应对每天新增的大量网页数据,该公司决定采用基于Lucene的分布式并行索引技术。具体步骤如下: 1. **需求分析*...
2. 创建索引目录:索引数据会存储在一个Directory对象中,可以是文件系统、内存或数据库。通常我们选择FSDirectory,将索引存储在本地文件系统。 3. 创建文档对象:为每份要索引的数据创建一个Document对象,添加...
在本示例中,我们将探讨 Lucene5 创建索引和执行搜索的基本流程。 1. **安装与设置** - `.classpath` 和 `.project` 文件是 Eclipse IDE 的配置文件,它们包含了项目的类路径和工程设置。为了运行 Lucene 示例,...