好久没有在这发博了,前段时间一直在复习、之后看书学习,编程很少,也没什么东西可以写。期末考试毕竟是大事啊。最近刚学完了lucene建立索引、还有SQLite的基本用法,之后我就会在操作后跟大家分享了,今天来写一下这篇Lucene建立本地txt文件索引作为新开始吧。
话不多说,如果想学Lucene或者想了解先看看程序吧 Lucene还是比较好理解的一个开源包,如果觉得感兴趣看看入门就很容易看懂下面段程序了。这段程序主要通过内存索引向磁盘索引合并来提高索引速度,其他操作都是基础操作:
注:Lucene是一款java编写的开源搜索引擎工具包,可以用来开发搜索引擎,也是Apache的重要成员之一。IBM等网站都有使用Lucene提供的服务。近期随着Lucene影响力的增大,在中国也越来越多的人在使用Lucene。……话不多说了,这个是我写的,不是很权威。
1. Index.java
package testLucene;
import java.io.*;
import java.util.Date;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.RAMDirectory;
public class Index{
private IndexWriter writer=null;
//利用两种Directory 加快索引速度 首先初始化RAMDirectory
private static RAMDirectory ramd=new RAMDirectory();
public Index(){
try{
writer=new IndexWriter(ramd,new StandardAnalyzer(),true);
}catch(Exception e){
e.printStackTrace();
}
}
//构造Document 添加一个域 "contents"
private Document getDocument(File f) throws Exception{
Document doc=new Document();
FileInputStream is=new FileInputStream(f);
Reader reader=new BufferedReader(new InputStreamReader(is));
doc.add(Field.Text("contents", reader));
doc.add(Field.Keyword("path", f.getAbsolutePath()));
return doc;
}
//写入索引函数
public void writerToIndex() throws Exception {
File file=new File(Constants.Index_File_Path);
if(file.isDirectory()){
String[] files=file.list();
for(int i=0;i<files.length;i++){
File afile=new File(file,files[i]);
Document doc=getDocument(afile);
System.out.println("正在建立索引"+afile+"");
writer.addDocument(doc);
}
}
}
//关闭Writer
public void close() throws Exception{
writer.close();
}
//main函数 建立索引
public static void main(String[] args) throws Exception{
//建立一个FSDirectory
FSDirectory fsd=FSDirectory.getDirectory(Constants.Index_Store_Path, true);
IndexWriter fsWriter=new IndexWriter(fsd,new StandardAnalyzer(),true);
Index index=new Index();
//记录起始时间
Date start=new Date();
index.writerToIndex();
index.close();
fsWriter.addIndexes(new Directory[]{ramd});
Date end=new Date();
System.out.println("建立索引所用时间"+(end.getTime()-start.getTime())+"毫秒");
fsWriter.close();
}
}
2. Constants.java
package testLucene;
public class Constants {
//需要索引文件的存放路径
public final static String Index_File_Path="E:\\E\\Java\\Lucene\\testUse\\test1";
//存放索引的路径
public final static String Index_Store_Path="E:\\E\\Java\\Lucene\\testUse\\storeIndex";
}
3.test1中存放的文件
a.txt b.txt c.txt d.txt
4.运行结果
正在建立索引E:\E\Java\Lucene\testUse\test1\a.txt
正在建立索引E:\E\Java\Lucene\testUse\test1\b.txt
正在建立索引E:\E\Java\Lucene\testUse\test1\c.txt
正在建立索引E:\E\Java\Lucene\testUse\test1\d.txt
建立索引所用时间297毫秒
特别提醒一下,我学习的是1.4.3版本的 现在又3.0版本了,不过有一些基本操作都做了一定修改。编程需要改动的地方太多,耽误时间,所以这个程序只适合老版本的lucene执行。网上对于lucene的教程应该很多,我记不凑热闹了,发点程序共享一下。
分享到:
相关推荐
### Lucene对XML文档建立索引的技术解析与实践 #### 一、引言 随着互联网技术的迅猛发展,非结构化数据(如XML文档)在企业和组织中的应用日益广泛。如何高效地处理这些非结构化的数据,特别是进行快速检索成为了一...
标题中的“Lucene对本地文件多目录创建索引”指的是使用Apache Lucene库来构建一个搜索引擎,该搜索引擎能够索引本地计算机上的多个文件目录。Lucene是一个强大的全文搜索库,它允许开发者在Java应用程序中实现高级...
《深入理解Lucene:解析索引文件的读取》 Lucene,作为一款强大的全文搜索引擎库,被广泛应用于各类信息检索系统中。它的核心功能之一就是构建和读取索引文件,以高效地进行文本搜索。本文将深入探讨Lucene如何读取...
2. **创建索引目录**:Lucene的索引存储在文件系统中的一个目录下,所以你需要先创建一个文件夹作为索引的存储位置。 3. **配置Analyzer**:Analyzer是Lucene中用于分词的组件,可以根据需求选择不同的Analyzer。...
这是Lucene3.0索引查看文件 直接运行jar包就可以打开ui界面 陪好路径就可以使用了
通常我们选择FSDirectory,将索引存储在本地文件系统。 3. 创建文档对象:为每份要索引的数据创建一个Document对象,添加字段并赋值。 4. 添加文档到索引:使用IndexWriter对象将Document对象添加到索引目录中。...
本文将深入探讨如何利用Lucene实现增量索引,这是一种在数据库或文件系统更新时仅对新数据或变化数据进行索引的技术,以降低资源消耗并保持搜索性能。 **1. Lucene基础知识** Lucene首先需要理解的是它的核心概念,...
《深入理解Lucene5增量索引与Zoie系统》 在信息检索领域,Lucene是一个广泛使用的全文搜索引擎库,其强大的索引能力和高效的搜索性能为开发者提供了强大的支持。然而,随着数据量的不断增长,如何高效地进行增量...
在本文中,我们将探讨如何使用Lucene建立数据库索引,并分享一些在实践过程中的经验和教训。Lucene是一个高性能、全文本搜索库,广泛用于构建搜索引擎。在创建索引时,需要注意以下关键点: 1. **资料的准确性**:...
《使用Lucene.NET对数据库建立索引及搜索》 在信息技术领域,搜索引擎是不可或缺的一部分,尤其是在处理大量数据时。Lucene.NET是一个强大的全文搜索引擎库,它允许开发人员在应用程序中集成高级搜索功能。本文将...
索引文件格式是Lucene实现快速搜索的关键。以下是对Lucene索引文件格式的详细说明。 首先,我们要理解Lucene索引的基本结构。一个Lucene索引位于一个文件夹中,这个文件夹包含了多个段(Segment)。每个段是独立的...
在这个场景中,我们将探讨如何利用Lucene来检索文本并建立索引,同时结合Struts框架构建一个Web程序。 首先,**Lucene** 是一个开源的Java库,它提供了完整的搜索功能,包括分词、索引创建、查询解析和结果排序。它...
《深入理解Lucene索引文件查看工具LukeAll 4.7.1》 在信息检索领域,Lucene作为一款强大的全文搜索引擎库,被广泛应用在各种数据检索系统中。然而,对于开发者来说,理解并调试Lucene创建的索引文件并非易事。此时...
- **分词器(Tokenizer)**:分词器将输入的文本分解为一系列的词语,这是建立索引的第一步。 - **分析器(Analyzer)**:分析器结合了分词器、过滤器等,负责对文本进行预处理,如去除停用词、词形还原等。 ### 2...
**标题:“Lucene建立索引”** **描述分析:** Lucene是一个开源的全文检索库,由Apache软件基金会开发。它的主要功能是提供高效的文本搜索引擎,尤其在处理大量数据时,其性能表现突出。倒排索引是Lucene实现搜索...
在Java开发中,Lucene被广泛用于实现文件的全文检索功能,包括对doc、docx、pdf、txt等常见格式文档的文本内容检索。在本文中,我们将探讨如何使用Lucene对这些文件类型进行全文检索的实现。 首先,为了实现全文...
### Lucene3.0创建索引 在Lucene3.0中创建索引是一个关键功能,可以帮助用户快速地检索和管理大量的文本数据。本篇文章将详细介绍如何使用Lucene3.0来创建索引,并通过一个具体的例子来演示整个过程。 #### 一、...
【Lucene 索引结构原理】 Lucene 是一个高性能、全文检索的开源库,它主要处理非结构化的数据,如邮件、Word 文档等。与传统的数据库不同,Lucene 更专注于文本的检索,而非存储和管理结构化数据。本文将深入探讨...
Lucene 删除 合并索引,可以指定几个索引文件合并成一个索引文件。自己写的,有很多不足之处请多指教