搜索引擎学习(五)Lucene操作索引
一、代码分析
/** * Lucene入门 * 操作索引 */ public class ManageIndex { public IndexWriter getIndexWriter() throws Exception { //设置索引库的位置 Directory directory = FSDirectory.open(new File("E:\\zhanghaoBF\\luceneSolr\\indexLibrary").toPath()); Analyzer analyzer = new StandardAnalyzer();//创建分词器对象(官方推荐标准分词器) IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);//设置使用的分词器 return new IndexWriter(directory, indexWriterConfig);//索引对象 } /** * 全删除(PS:索引里面的文档也会删掉) * * @throws Exception */ @Test public void deleteAllIndex() throws Exception { IndexWriter indexWriter = getIndexWriter();//获取索引的流对象 indexWriter.deleteAll();//删除全部索引 indexWriter.close();//关流 } /** * 按条件删除(PS:索引里面的文档也会删掉) * * @throws Exception */ @Test public void deleteIndex() throws Exception { IndexWriter indexWriter = getIndexWriter();//获取索引的流对象 Query query = new TermQuery(new Term("fileContent", "lucene"));//PS:TermQuery为精准匹配 indexWriter.deleteDocuments(query);//按条件删除索引 indexWriter.close();//关流 } /** * 修改(PS:先删除后新增,与数据库里面的修改不一样,注意区分) * * @throws Exception */ @Test public void updateIndex() throws Exception { //获取索引的流对象 IndexWriter indexWriter = getIndexWriter(); //构建一个文档对象 Document doc = new Document(); doc.add(new TextField("fileName", "新的文件名称", Field.Store.YES)); doc.add(new TextField("fileContent", "新的文件内容", Field.Store.YES)); //调用更新操作,先把符合条件的索引删掉(包括term和存在索引库的文档),然后把刚才新增的文档对象加入到索引库中 indexWriter.updateDocument(new Term("fileName", "是"), doc);//按条件删除索引,再加入新的索引 //PS:删掉的文档还是会占用对应的文档ID,新增的文档排在最后(和数据库ID自增时的删除再添加一个道理) //关流 indexWriter.close(); } }
二、注意事项
1、删除的时候,索引库里对应ID下的term和文档都会删除。
2、修改操作其实是先把符合条件的term和文档都会删掉,然后再加入新的文档。
3、删掉的文档,文档ID不会释放,还是被占用的。
4、流用完一定要记得关。
【推荐】国内首个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 绘制太阳,地球,月球 运作规律