`

Lucene_demo09_txt文件索引

阅读更多
Lucene_demo09_txt文件索引


/**
 * txt文件索引
 */
public class IndexFile {

	private Directory directory;

	private String indexPath = "D://lucene/index"; // 建立索引文件的目录

	private String dirPath = "D://lucene/data"; // txt资源目录

	private IndexWriter indexWriter;

	/*
	 * 获得所有txt文件
	 */
	public List<File> getFileList(String dirPath) {
		File[] files = new File(dirPath).listFiles();
		List<File> fileList = new ArrayList<File>();
		for (File file : files) {
			if (isTxtFile(file.getName())) {
				fileList.add(file);
			}
		}
		return fileList;
	}

	/*
	 * 判断是否是txt文件
	 */
	public boolean isTxtFile(String fileName) {
		if (fileName.lastIndexOf(".txt") > 0) {
			return true;
		}
		return false;
	}

	/*
	 * 将文件转换成Document对象
	 */
	public Document fileToDocument(File file) throws Exception {
		Document document = new Document();
		document.add(new Field("filename", file.getName(), Store.YES, Index.ANALYZED));
		document.add(new Field("content", getFileContent(file), Store.YES, Index.ANALYZED));
		document.add(new Field("size", String.valueOf(file.getTotalSpace()), Store.YES, Index.ANALYZED));
		return document;
	}

	/*
	 * 获得indexwriter对象
	 */
	public IndexWriter getIndexWriter(Directory dir) throws Exception {
		IndexWriter indexWriter = new IndexWriter(dir, LuceneUtils.analyzer, MaxFieldLength.LIMITED);
		return indexWriter;
	}

	/*
	 * 关闭indexwriter对象
	 */
	public void closeWriter() throws Exception {
		if (indexWriter != null) {
			indexWriter.close();
		}
	}

	/*
	 * 读取文件内容
	 */
	public String getFileContent(File file) throws Exception {
		Reader reader = new InputStreamReader(new FileInputStream(file), "UTF-8");
		BufferedReader br = new BufferedReader(reader);
		String result = "";
		while (br.readLine() != null) {
			result = result + "\n" + br.readLine();
		}
		br.close();
		reader.close();
		return result;
	}

	/**
	 * 启动初始化
	 */
	@Before
	public void init() {
		try {
			directory = FSDirectory.open(new File(indexPath));
			indexWriter = getIndexWriter(directory);
		}
		catch (Exception e) {
			System.out.println("索引打开异常!");
		}
	}

	/**
	 * 创建索引 Main方法
	 */
	@Test
	public void createIndex() throws Exception {
		List<File> fileList = getFileList(dirPath);
		Document document = null;
		for (File file : fileList) {
			document = fileToDocument(file);
			indexWriter.addDocument(document);
			System.out.println("filename:" + document.get("filename"));
			System.err.println("content:" + document.get("content"));
			indexWriter.commit();
		}
		closeWriter();
	}
}
分享到:
评论

相关推荐

    lucene_demo例子

    在"lucene_demo"这个压缩包中,很可能包含了一些示例代码或者项目,用于演示如何使用Lucene进行实际的文本搜索开发。这些示例通常会涵盖以下几个关键知识点: 1. **安装与配置**:Lucene的下载、构建环境的搭建,...

    luceneDemo_pure1aa_DEMO_clucene_

    将提供的“luceneDemo”文件加入到项目中,这是DEMO的主要代码。这个DEMO将展示如何使用Clucene的基本操作,包括创建索引、搜索索引等关键步骤。 五、理解DEMO代码 DEMO代码通常包含以下几个部分: 1. **索引创建...

    Lucene-Demo.rar Lucene分词的demo

    在运行这个Demo时,注意描述中提到的"存储地址",这通常指的是Lucene创建的索引文件的保存位置。开发者需要根据自己的环境修改这个路径,确保Lucene能够正确读写索引。在索引文本时,开发者会调用Lucene提供的API将...

    Lucene简单Demo(附带Jar)

    "luceneDemo1"和"lucene"可能是两个不同的文件或文件夹,它们可能包含了运行Lucene的示例代码或者已经构建好的索引。"luceneDemo1"可能是一个包含Lucene应用示例的Java项目,包含了必要的类和方法,展示了如何使用...

    Lucene5写的全文搜索的demo,包括创建索引和搜索

    总结,Lucene5 全文搜索 demo 展示了如何利用 Lucene 的核心组件创建和搜索索引。从索引的构建到查询的执行,每个步骤都涉及到对 Lucene API 的深入理解。通过学习这个示例,开发者可以进一步了解 Lucene 的工作原理...

    Lucene常用的Demo

    本篇文章将深入探讨Lucene的几个常见示例,包括`LuceneDemo`、`LuceneZJ`、`Lucene_HelloWorld`,帮助初学者快速理解Lucene的基本操作。 1. **Lucene_HelloWorld** 这个示例是入门Lucene的首选,它展示了如何创建...

    lucene 4.7.2 Demo

    《Lucene 4.7.2 Demo:Java全文搜索引擎的核心技术探索》 Lucene,作为Apache软件基金会的一个开源项目,是Java平台上的一个全文搜索引擎库。它的主要功能是提供高效、可扩展的文本检索和分析能力。在4.7.2这个版本...

    简单的lucene demo

    4. **Lucene的简单demo**:这个项目包含两个关键文件——`TestLuceneSearch.java`和`TestLuceneIndex.java`,分别代表了Lucene的索引创建和搜索功能的示例代码。通过这两个文件,我们可以了解如何初始化索引器、添加...

    Lucene3.3.0学习Demo

    **Lucene 3.3.0 学习Demo** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发。在3.3.0版本中,Lucene提供了强大的文本搜索功能,包括分词、索引创建、查询解析和结果排序等。这个"Lucene3.3.0学习Demo...

    lucene简单demo

    在"LuceneDemo"这个项目中,你可以期待看到一个简单的Java程序,它将演示上述过程,可能包括创建一个或多个包含文本数据的Document,使用默认的StandardAnalyzer建立索引,然后执行一个基本的文本查询,展示搜索结果...

    Lucene初探,一个初级的LuceneDemo

    通过学习和实践这个LuceneDemo,你可以对Lucene有一个初步的认识,了解如何创建、索引和搜索文档。随着深入学习,你会发现Lucene的强大之处在于其高度定制化的能力,可以满足各种复杂的搜索需求。在实际项目中,结合...

    全文搜索技术Lucene Demo

    在这个类中,你需要定义一个方法来读取数据源(如文件或数据库),并使用Lucene的`Analyzer`分析文本内容,将其拆分为单词。 例如,你可以使用`StandardAnalyzer`,它会处理标点符号和大小写,将文本标准化。接着,...

    luceneDemo

    **Lucene 概述** Lucene 是一个高性能、全文本搜索库...实际的 "luceneDemo" 可能包含更丰富的功能,例如支持多字段查询、高亮显示搜索结果、分页显示等。学习和理解 Lucene,可以帮助开发者构建强大的全文检索系统。

    luceneDemo(完整代码)

    在"luceneDemo4.0"中,你将会看到以上概念的具体应用,包括创建索引、执行查询、高亮展示结果以及调整排序逻辑的示例代码。通过实践这个项目,你不仅可以了解Lucene的基本操作,还能学习到如何在实际项目中优化搜索...

    lucene.net demo

    **Lucene.Net 搜索Demo详解** Lucene.Net是一款开源全文搜索引擎库,它是Apache Lucene项目在.NET Framework上的实现。这个“lucene.net demo”旨在帮助开发者了解如何利用Lucene.Net来构建桌面搜索功能,让我们...

    Lucene.NET全文索引搜索Demo项目

    **Lucene.NET全文索引搜索Demo项目** Lucene.NET是一个基于Apache Lucene的开源全文搜索引擎库,它为.NET Framework提供高性能、可扩展的信息检索服务。这个"Lucene.NET全文索引搜索Demo项目"是一个实际应用示例,...

    Lucene入门demo

    1. **创建索引(Creating an Index)**: 首先,我们需要创建一个 Directory 对象,它是 Lucene 存储索引的位置,可以是文件系统、内存或者分布式存储。然后,使用 IndexWriter 创建索引,将文档添加到索引中。 2. *...

    lucene Demo(paoding)

    通过分析【压缩包子文件的文件名称列表】中的"LuceneTest",我们可以推测这可能包含了测试类或者测试用例,用于验证Lucene和Paoding的整合效果,包括创建索引、执行搜索、性能测试等功能的实现代码。 综上所述,...

    lucene示例 demo+jar包

    1. **索引(Indexing)**: Lucene 首先需要对数据进行索引,这个过程会将文本数据转换为倒排索引结构。倒排索引允许快速查找包含特定单词或短语的文档。 2. **文档(Documents)**: 在 Lucene 中,文档是搜索的基本...

    lucene for java 简单demo

    **Lucene for Java 简单DEMO** Lucene 是一个全文搜索引擎库,由Apache软件基金会开发并维护,它提供了一个高效、可扩展的搜索框架,使得开发者可以轻易地在自己的应用程序中集成全文检索功能。Java是Lucene的主要...

Global site tag (gtag.js) - Google Analytics