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

相关文章

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二