lucene 3.0.0一个子目录及其子目录的文件转换成Document对象 并添加多索引库中进行查询...

本文主要是介绍lucene 3.0.0一个子目录及其子目录的文件转换成Document对象 并添加多索引库中进行查询...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[align=center][size=x-large][color=red]lucene3.0.0 一个子目录及其子目录的文件转换成Document对象 并添加多索引库中进行查询[/color][/size][/align]

package com.txt.test2;

import java.io.File;
import java.io.FileReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;
//一个子目录及其子目录的文件转换成Document对象 并添加多索引库中进行查询
public class LuceneTest2 {
private String path = "f:"+File.separator+"cd";
private File storeFile = new File("f:"+File.separator+"indexDir7");
private Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
private IndexWriter writer;
@Test
public void create () throws Exception {
Directory directory = new SimpleFSDirectory(storeFile);
writer = new IndexWriter(directory, analyzer,true, MaxFieldLength.LIMITED);
File file = new File(path);
showFile(file);

writer.close();
}
//获取file目录下的文件及其子目录
public void showFile(File file) throws Exception{
if (file == null) {
return ;
}else if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
//递归
showFile(files[i]);
}
}else {
System.out.println(file.getAbsolutePath());
//建立索引 将文件转换成doc..对象
Document document = new Document();
document.add(new Field("fileName", file.getName(), Store.YES, Index.ANALYZED));
document.add(new Field("filePath", file.getAbsolutePath(), Store.YES, Index.ANALYZED));
//不做存储
document.add(new Field("content", new FileReader(file)));

writer.addDocument(document);
}
}

//查询
@Test
public void serach() throws Exception{
Directory directory = new SimpleFSDirectory(storeFile);
IndexSearcher searcher = new IndexSearcher(directory,true);
QueryParser parser = new QueryParser(Version.LUCENE_30, "filePath", analyzer);
String key = "笔记";
Query query = parser.parse(key);
TopDocs tdDocs = searcher.search(query, 100);
System.out.println("查询的内容是:"+key);
System.out.println("一共命中了多少次:"+tdDocs.totalHits);
System.out.println();
if (tdDocs.scoreDocs != null) {
for (int i = 0; i < tdDocs.scoreDocs.length; i++) {
ScoreDoc sDoc = tdDocs.scoreDocs[i];
System.out.println("文档编号的索引:"+sDoc.doc);
System.out.println("得分:"+sDoc.score);

Document document = searcher.doc(sDoc.doc);
System.out.println("fileName名称是:"+document.get("fileName"));
System.out.println("filePath路径是:"+document.get("filePath"));
System.out.println("content内容是:"+document.get("content"));
}
}else {
System.out.println("没有要查找的内容...");
}
searcher.close();
}
}

这篇关于lucene 3.0.0一个子目录及其子目录的文件转换成Document对象 并添加多索引库中进行查询...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714289

相关文章

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组

mysql关联查询速度慢的问题及解决

《mysql关联查询速度慢的问题及解决》:本文主要介绍mysql关联查询速度慢的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql关联查询速度慢1. 记录原因1.1 在一次线上的服务中1.2 最终发现2. 解决方案3. 具体操作总结mysql

Javascript访问Promise对象返回值的操作方法

《Javascript访问Promise对象返回值的操作方法》这篇文章介绍了如何在JavaScript中使用Promise对象来处理异步操作,通过使用fetch()方法和Promise对象,我们可以从... 目录在Javascript中,什么是Promise1- then() 链式操作2- 在之后的代码中使

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

Mysql中InnoDB与MyISAM索引差异详解(最新整理)

《Mysql中InnoDB与MyISAM索引差异详解(最新整理)》InnoDB和MyISAM在索引实现和特性上有差异,包括聚集索引、非聚集索引、事务支持、并发控制、覆盖索引、主键约束、外键支持和物理存... 目录1. 索引类型与数据存储方式InnoDBMyISAM2. 事务与并发控制InnoDBMyISAM

StarRocks索引详解(最新整理)

《StarRocks索引详解(最新整理)》StarRocks支持多种索引类型,包括主键索引、前缀索引、Bitmap索引和Bloomfilter索引,这些索引类型适用于不同场景,如唯一性约束、减少索引空... 目录1. 主键索引(Primary Key Index)2. 前缀索引(Prefix Index /

SpringBoot实现导出复杂对象到Excel文件

《SpringBoot实现导出复杂对象到Excel文件》这篇文章主要为大家详细介绍了如何使用Hutool和EasyExcel两种方式来实现在SpringBoot项目中导出复杂对象到Excel文件,需要... 在Spring Boot项目中导出复杂对象到Excel文件,可以利用Hutool或EasyExcel