搜索引擎学习(二)Lucene创建索引
PS:需要用到的jar包:
代码实现
1、工程结构
2、设置工程依赖的jar包
3、代码实现
/** * Lucene入门 * 创建索引 */ public class CreateIndex { /** * 创建索引 * 第一步:创建java工程,导入相关的jar包 * 第二步:创建一个indexWriter(索引写入)对象 * (1)指定索引库的存放位置Directory * (2)指定一个分析器,对文档内容进行分析 * 第三步:创建document(文档)对象 * 第四步:创建field(域)对象,将field添加到document对象中 * 第五步:使用indexWriter对象将document对象写入索引库,此过程进行索引创建,并将索引和document对象写入索引库 * 第六步:关闭indexWriter对象(关流) */ @Test public void createIndex() throws Exception { /*第二步:创建一个indexWriter(索引写入)对象*/ //设置索引库的位置(PS:若使用RAMDiretory则是使用内存当做索引库,但是一关机就凉凉...) Directory directory = FSDirectory.open(new File("E:\\zhanghaoBF\\luceneSolr\\indexLibrary").toPath()); //创建分词器对象(官方推荐标准分词器) Analyzer analyzer = new StandardAnalyzer(); //设置使用的分词器 IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer); //创建索引对象 IndexWriter indexWriter = new IndexWriter(directory, indexWriterConfig); File f = new File("E:\\zhanghaoBF\\luceneSolr\\indexField"); File[] listFiles = f.listFiles(); for (File file : listFiles) { /*第三步:创建document(文档)对象*/ Document document = new Document(); /*第四步:创建field(域)对象,将field添加到document对象中*/ //文件名称 String file_name = file.getName(); Field fileNameField = new TextField("fileName", file_name, Field.Store.YES); //文件大小 long file_size = FileUtils.sizeOf(file); Field fileSizeField = new StoredField("fileSize", file_size + ""); //文件路径 String file_path = file.getPath(); Field filePathField = new StoredField("filePath", file_path + ""); //文件内容 String file_content = FileUtils.readFileToString(file); Field fileContentField = new TextField("fileContent", file_content, Field.Store.NO);//第三个参数是设置存不存在索引库里 document.add(fileNameField);//文件名称 document.add(fileSizeField);//文件大小 document.add(filePathField);//文件路径 document.add(fileContentField);//文件内容 /*第五步:使用indexWriter对象将document对象写入索引库,此过程进行索引创建,并将索引和document对象写入索引库*/ indexWriter.addDocument(document); } /*第六步:关闭indexWriter对象(关流)*/ indexWriter.close(); } }
4、右键运行后,查看生成的索引文件
5、使用luke查看索引
完事 lucene代码创建索引就算成功了~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律