import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.Date;
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.index.IndexWriter;
public class TextFileIndexer {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO 自动生成方法存根
File fileDir=new File("D:\\chenzk\\lucene");
Analyzer luceneAnalyzer=new StandardAnalyzer();
//创建一个类StandardAnalyzer的一个实例,这个实例是从文本中提取索引项的
File indexDir = new File("C:\\luceneIndex");
IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);
//第一个参数是存储索引文件的路径,第二个参数是指定了在索引的过程中使用什么样的分词器,最后一个参数是一个布尔的参数如果
//为真表示要创建一个新的索引,如果值为假表示打开一个已经存在的索引
File [] textFiles=fileDir.listFiles();
long startTime=new Date().getTime();
//add documents to the index
for(int i=0;i<textFiles.length;i++)
{
if(textFiles[i].isFile()&&textFiles[i].getName().endsWith(".txt"))
{ //只要你能将要索引的文件转化成文本格式lucene就能为你的文档建立索引
System.out.println("File "+textFiles[i].getCanonicalPath()+" is being indexed");
Reader textReader=new FileReader(textFiles[i]);
//以下是如何添加一个文档到索引文件中
Document document=new Document();// 它是由一个或者多个Field组成,我们可以把它想象是一个实际文档
//实际的Field是实际文档一些属性,
document.add(Field.Text("content",textReader));//域的名称我们需要索引的文本文件的内容
document.add(Field.Text("path", textFiles[i].getPath()));//我们需要索引的文本文件的路径
indexWriter.addDocument(document);
}
}
indexWriter.optimize();
indexWriter.close();//当我们把文档添加到索引中后,不要忘记关闭索引,这样才保证Lucene把添加的文档写回到硬盘上。
long endTime=new Date().getTime();
System.out.println("It took "+(endTime-startTime)+" millseconds to create an index for the files in the directory "+fileDir.getPath()) ;
}
}
File D:\chenzk\lucene\1.txt is being indexed
File D:\chenzk\lucene\2.txt is being indexed
File D:\chenzk\lucene\3.txt is being indexed
File D:\chenzk\lucene\segments.txt is being indexed
It took 187 millseconds to create an index for the files in the directory D:\chenzk\lucene
请大家提供宝贵的意见!谢谢
分享到:
相关推荐
- **关闭IndexWriter**:完成索引过程后关闭`IndexWriter`,触发段的合并和优化。 #### 五、Lucene段合并(merge)过程分析 **1. 段合并过程总论** 段合并是Lucene维护索引完整性的一个重要环节,其主要目的是减少...
1. **索引(Index)**:一个`Index`可以看作是一个文件夹,其中包含了一系列相关的索引文件。 2. **段(Segment)**:一个`Index`可能由多个`Segment`组成。 3. **文档(Document)**:每个`Document`都是独立的索引单元,...
基于matlab的模拟滤波器和数字滤波器设计, 基于matlab的模拟滤波器和数字滤波器设计,其中数字滤波器包扩IIR和FIR的低通、高通、带通、带阻四大类型,模拟滤波器包括巴特沃斯( Butterworth)和切比雪夫( Chebyshev)算法下的低通、高通、带通、带阻四种类型。
【Python爬虫】python爬虫练手项目,或许不止爬虫。
AI for Science 论文解读合集(持续更新ing),论文/数据集/教程下载hyper.ai出色的人工智能助力科学研究前言AI+ 生物医药AI+Biopharmaceutical1. AdaDR 在药物重定位方面的性能优于多个基准方法2. IMN4NPD 加快分子网络中广泛集群的去复制,对自循环与成对节点提供标注3. 深度生成模型 MIDAS 用于单细胞多组学数据马赛克整合4. 基于蛋白质口袋的 3D 分子生成模型——ResGen5. 大模型 + 机器学习高精度预测酶动力学参数6. MIT 利用深度学习发现新型抗生素7. 神经网络解密 GPCR-G 蛋白偶联选择性8. Macformer 将无环药物菲卓替尼大环化9. 快速自动扫描套件 FAST 高效获取样本信息10. 回归网络 + CGMD,预测百亿种多肽的自组装特性11. 无监督学习预测 7100 万种基因突变12. 基于图神经网络 (GNN) 开发气味分析 AI13. 图神经网络筛选安全高效的抗衰老成分14. 机器学习量化分析多巴胺的释放量和释放位置15. 机器学习发现三种抗衰老药物1
【岗位说明】市场部研展工作流程图及具体流程
两个女儿童在树下浅黄小学课件模板
儿童美术绘画课件模板
1.Matlab实现ELM-Adaboost极限学习机集成学习多输入单输出回归预测(Matlab完整源码和数据)。 2.输出MAE 、 MAPE、MSE、RMSE、R2多指标评价,运行环境Matlab2023b及以上。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 5.作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作9年,更多仿真源码、数据集定制私信.
线控转向车辆的路感反馈控制 线控车辆的路感电机反馈控制:分别进行路感电机力矩的拟合,由转向盘总成得到转向阻力矩等,进一步得到理想路感反馈力矩,采用滑模控制、PID控制、LQR控制等跟随理想反馈力矩。 由Simulink和CarSim联合仿真,效果良好。 保证运行成功。
2、主要创新点: 首先,细致分析了YOLOv5算法的网络结构和原理,以YOLOv5s作为基准网络在瓷砖表面瑕疵数据集上进行训练和测试,主要做以下改进: (1) 添加注意力机制; (2) 引入SPD-Conv; (3) 优化损失函数。
西门子200smart 恒压供水程序 西门子200smart恒压供水程序,实际的项目,稳定运行多年,三台水泵自动运行 触摸屏是mcgs,包含四个画面监控画面,参数画面,以及报警画面,手动画面,参数画面可以设置供水的压力给定值,压力传感器的量程,加泵延时时间,减泵延时时间,以及自动轮时间等设定E12 程序结构清晰,对于学习和实际项目非常有帮助
IOS游戏源码HotelApp提取方式是百度网盘分享地址
【岗位说明】物流仓储岗位职责
煤矿开挖区的三维渗流仿真 煤矿开挖区模型。 计算了渗流速度场以及结构的应力场
【Python项目】python数据可视化项目_pgj
【岗位说明】酒店楼层主管的岗位职责
城市高楼卡通儿童教育教学课件模板
机械设计螺丝自动智能包装机sw17可编辑非常好的设计图纸100%好用.zip