2、学习lucene之索引删除、恢复删除、强制删除

Lucene之删除索引 Lucene之删除索引 Lucene之删除索引 Lucene之删除索引 http://blog.youkuaiyun.com/nupt123456789/article/details/10666105 立即下载

        本来想在这篇里把索引的优化和更新一起写,但写完标题后发现标题好长,所以在这里就暂时只写关于索引删除的内容吧。因为小弟学的也不深,所以写的也有些简单,还望见谅。

        一、索引删除

        关于索引删除,有两个类都可以完成,IndexWriter和IndexReader。当我了解到这个问题时,纠结了半天到底用哪个,后来问了谷老师,他帮我找到了答案,最好是用IndexWriter,为么啊?在我转来的那篇“Lucene中删除索引是用IndexWriter还是用IndexReader”中仔细写了原因,在此就不多说了。如何进行删除,分四步走战略。

        1、创建Directory,索引的存放位置

        2、创建IndexWriter

        3、删除索引

        4、关闭IndexWriter

附上代码:

下面代码中,删除的是建索引时,id的Field中,内容为1的记录。

package com.hlp.lucene.deleteIndex;

import java.io.File;
import java.io.IOException;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;

/**
 * 功能:删除索引
 *
 */
public class DeleteIndex
{
    // 索引的存放位置
    String luceneIndex = "G://lucene//luceneIndex2";

    // 分词器
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);

    public void delIndex()
    {
	IndexWriter indexWriter = null;
	try
	{
	    // 1、创建Directory,索引的存放位置
	    Directory directory = FSDirectory.open(new File(luceneIndex));

	    // 2、创建IndexWriter
	    IndexWriterConfig iwConfig = new IndexWriterConfig(Version.LUCENE_35, analyzer);
	    indexWriter = new IndexWriter(directory, iwConfig);

	    // 3、删除索引,这样并不会完全删除,可以恢复
	    indexWriter.deleteDocuments(new Term("id", "1"));
	}
	catch (CorruptIndexException e)
	{
	    e.printStackTrace();
	}
	catch (IOException e)
	{
	    e.printStackTrace();
	}finally
	{
	    // 4、关闭IndexWriter
	    if(null != indexWriter)
	    {
		try
		{
		    indexWriter.close();
		}
		catch (IOException e)
		{
		    e.printStackTrace();
		}
	    }
	}  // end finally

    } // end getIndexInfor
}
上面这种方式执行完毕后,其实索引并没有完全删除,虽然搜索的时候已经搜索不到了,就貌似在电脑上删除文件后先放在回收站一样,其实,这个索引也被放在了lucene的“回收站”,可以进行恢复,除非再执行强制删除才会完全删除。

        二、索引恢复

        上面也谈到了,用上面方法删除的索引是可以进行恢复的。同样,也分为四步走战略。
        1、创建Directory,索引的存放位置
        2、创建IndexReader,必须把对索引的只读设置为false
        3、恢复删除的索引内容
        4、关闭IndexReader
        以下是代码展示:
package com.hlp.lucene.deleteIndex;

import java.io.File;
import java.io.IOException;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;

/**
 * 功能:恢复索引
 *
 */
public class UndeleteIndex
{
    // 索引的存放位置
    String luceneIndex = "G://lucene//luceneIndex2";

    // 分词器
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);

    public void unDeleteIndex()
    {
	IndexReader indexReader = null;

	try
	{
	    // 1、创建Directory,索引的存放位置
	    Directory directory = FSDirectory.open(new File(luceneIndex));

	    // 2、创建IndexReader,必须把对索引的只读设置为false
	    indexReader = IndexReader.open(directory, false);
	    
	    // 3、恢复删除的索引内容
	    indexReader.undeleteAll();
	}
	catch (CorruptIndexException e)
	{
	    e.printStackTrace();
	}
	catch (IOException e)
	{
	    e.printStackTrace();
	}finally
	{
	    // 4、关闭IndexReader
	    try
	    {
		indexReader.close();
	    }
	    catch (IOException e)
	    {
		e.printStackTrace();
	    }
	} // end finally
    }


}

这样恢复删除后,会把所有在lucene“回收站”中的索引都恢复回去。
        

        三、强制删除索引

        上面所写的删除会先放到lucene“回收站”中,那么能不能一下就删除了呢?答案是可以的。下面就来演示下,用四步走方法。
        1、创建Directory,索引的存放位置
        2、创建IndexWriter
        3、强制删除没有完全删除的索引
        4、关闭IndexWriter

下面是代码演示:

package com.hlp.lucene.deleteIndex;

import java.io.File;
import java.io.IOException;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.util.Version;

/**
 * 功能:强制删除索引
 *
 */
public class ForceDelete
{
    // 索引的存放位置
    String luceneIndex = "G://lucene//luceneIndex2";

    // 分词器
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);

    public void forceDelIndex()
    {
	IndexWriter indexWriter = null;

	try
	{
	    // 1、创建Directory,索引的存放位置
	    Directory directory = FSDirectory.open(new File(luceneIndex));

	    // 2、声明IndexWriter
	    // 2.1、声明IndexConfig对象
	    IndexWriterConfig iwConfig = new IndexWriterConfig(Version.LUCENE_35, analyzer);
	    // 2.2、声明IndexWriter对象
	    indexWriter = new IndexWriter(directory, iwConfig);
	    
	    // 3、强制删除没有完全删除的索引
	    indexWriter.forceMergeDeletes();
	}
	catch (CorruptIndexException e)
	{
	    e.printStackTrace();
	}
	catch (LockObtainFailedException e)
	{
	    e.printStackTrace();
	}
	catch (IOException e)
	{
	    e.printStackTrace();
	}finally
	{
	    // 4、关闭IndexWriter
	    try
	    {
		indexWriter.close();
	    }
	    catch (CorruptIndexException e)
	    {
		e.printStackTrace();
	    }
	    catch (IOException e)
	    {
		e.printStackTrace();
	    }
	}  // end finally

    }


}

如此一来,就可以直接把想删除的索引删掉了。


总结:
         上面三节简单介绍了索引的删除、恢复删除、彻底删除的操作,写的比较简单,没有详细介绍,至于具体的操作和效果,建议自己去测试,发现问题后问下谷老师,查的过程中可能还会学到其他东西哦,我就是这么干的,呵呵。至于以上我写的有任何问题和错误之处的话,还望指正,共同学习,谢谢。

Simulink进行无人机飞行力学建模与仿真 摘要:本文详细介绍了使用MATLAB/Simulink进行四旋翼无人机飞行力学建模与仿真的步骤。内容包括准备工作、动力学方程概述、模型构建(使用State-Space或Simscape Multibody)、可选控制器设计、仿真参数配置及结果分析。教程强调理解飞行力学原理和坐标系转换的重要性,建议根据需求选择模型复杂度,并推荐查阅学术文献获取更深入的建模方法。通过本教程,读者可掌握无人机动力学建模基础,为控制系统开发和性能优化奠定基础。 阅读详情

相关推荐

高缺失率时空数据插补实战:从随机森林到扩散模型的性能对比

数据缺失是数据分析与机器学习建模中普遍面临的挑战,尤其在时空数据领域,传感器故障、传输中断等问题常导致数据不完整。数据插补技术旨在基于已知数据的模式和关联性,合理估算缺失值,为后续分析提供可靠基础。其核心原理在于利用数据的时空相关性(如时间周期性、空间邻近性)及与外部驱动因素(如交通、气象)的关联构建预测模型。这项技术的价值在于能将不完整的数据集转化为可用于高质量分析和预测的可用资产,广泛应用于环境监测、交通流量预测、金融风控等领域。本文聚焦于一个极具挑战性的场景——PM2.5监测数据缺失率高达82%,通过

weixin_30363285的博客 544

lucene-新增,更新,删除过程解析

lucene新增文档过程 疑问: Field.Store字段的含义是?Store.YES 保存 可以查询 可以打印内容 ; Store.NO 不保存 可以查询 不可打印内容 由于不保存内容所以节省空间 完成写入过程的类?DefaultIndexingChain.StoredFieldsConsumer完成字段的写入过程。 lucene是如何控制写入速度的?通过flushController进行控制,执行插入动作前,需要保证排队中的flush个数和停顿的线程数为0, 否则将执行flush操作。 整理下Doc

langsiming的博客 2224

PCB板质量测试和PCB板

PCB板质量测试和板厂

weixin_51370842的博客 515

Lucene的删除Document的源码流程

Lucene删除Document的源码流程

点滴之积 1429

将点云坐标转换成世界坐标的demo

将点云坐标转换成世界坐标的demo

howard789的博客 2206

小众但实用:Python爬取钉钉/企业微信消息,实现办公数据自动化采集(完整版)

钉钉/企业微信的办公数据自动化采集,属于「小众但极度实用」的Python技巧——它不像爬虫爬取电商/网页数据那样被广泛关注,但能直接解决职场人的「刚需痛点」,把每天1-2小时的手动数据整理工作,变成「一键自动化完成」。这套技巧的核心价值,不在于「技术有多高深」,而在于「能真正落地、能真正提升效率」—— 几行简单的Python代码,就能解放双手,让你从繁琐的重复工作中解脱出来,专注于更有价值的核心工作。更重要的是:所有的技术和代码,都是基于「合规合法」的前提,守住了技术的底线,也守住了职场的原则。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1931

Lucene 索引维护 之 删除 与 更新 文档

目录 删除索引 删除全部索引 删除指定索引 更新索引 完整类文件 本文承接《Lucene 中文分词器 Ik-Analyzer 使用教程》、《Lucene 实战之入门案例》,不再创建新项目。 删除索引 当实际的原始文档发生变化之后,Lucene 中的数据也应该进行相应的更新或删除。 索引删除/更新之后,索引对应的文档同样会删除/更新! 删除全部索引 如下所示:删除全部索...

蚩尤后裔-汪茂雄 3839

手把手教你学Simulink--H桥逆变器的PWM控制设计与仿真

本文详细介绍了如何在Simulink环境中设计和仿真一个基于PWM控制的H桥逆变器。H桥逆变器广泛应用于电机驱动、UPS和可再生能源系统等领域,通过PWM技术可以有效控制输出电压的幅度和频率,减少谐波失真,提高系统效率和稳定性。文章首先介绍了所需的工具和环境,包括MATLAB/Simulink和SimscapeElectrical工具箱。接着,详细阐述了从定义任务需求、创建Simulink项目、建立基础电气模型、集成传感器模型、实现PWM控制算法到设置仿真参数和运行仿真的完整步骤。最后,文章总结了通过Sim

MHD0815的博客 718

初识lucene-增删改查(三)

一、lucene的索引的创建        package com.stx.testlucene; import java.io.File; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.cn.smart.Sm...

iteye_4062的博客 156

基于STM32L4XX、HAL库的Ra-01SC-P LoRa模块驱动程序设计

0x22) { // SX1276/SX1278版本号。// 发射功率(2-20)// 工作频率(Hz)// 编码率(5-8)

zhusl6688的博客 423

YOLO26 终极蒸馏指南:从入门到 SOTA (The Ultimate Distillation Guide)

《YOLO26 蒸馏技术指南》深入解析了知识蒸馏在目标检测中的应用,提出五大蒸馏范式:响应蒸馏(学习最终输出)、特征蒸馏(模仿中间特征)、关系蒸馏(捕捉通道关联)、CWD(通道语义对齐)和FGD(前景背景分离)。实验表明,"Response KD + CWD + FGD"组合效果最佳,使YOLO26n在0.5ms推理速度下达到0.956 mAP50,甚至超越教师模型。指南提供模块化代码实现和超参数调优建议,强调蒸馏能平衡模型精度与效率,是轻量化部署的有效方案。

weixin_51988935的博客 717

lucene&solr从入门到精通-----删除,修改,查询

删除的大概思路, 既然添加是通过流添加的,那删除肯定也是通过流删除的,然后也可以通过指定的条件删除 第一,得到一个流IndexWriter 第二,流有个方法是deleteAll()全部删除的方法,删除即可,也可以通过增加的时候通过字段域来作为条件删除deleteDocuments(new TermQuery(new Term(“fileName”,”apache”));),注意是 k

705

SIWAVE+ADS提取PCB走线寄生参数

本文将介绍一种很适合PCB走线提取寄生电感等参数的方法,即是通过SIWAVE将PCB走线的S参数提取出来,再通过ADS将S参数转换成电感、电容值。

sinat_15150363的博客 1765

Lucene中索引的删除,更新与查找以及恢复(lucene3.5)

package org.itat.text1; import java.io.File; import java.io.IOException; import javax.management.Query; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document

Lves Li的专栏 2498

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

lucene索引删除,恢复,更新

package org.se.lucene; //主类 import java.io.File; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache

KarlDoenitz的专栏 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Lucene笔记04-Lucene索引的删除与更新

一、删除索引 public void delete() { IndexWriter indexWriter = null; try { indexWriter = new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUC...

王劭阳的博客 822

Lucene小练三——索引删除,恢复,更新

package org.se.lucene; //主类 import java.io.File; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache

Smallearth的专栏 3134

lucene--删除文档deleteDocuments

deleteDocuments(Term term)是根据term删除document,但是这里的删除并不是真正的删除。 而是存储在一个回收站中的,可以恢复删除的document public void delete() { IndexWriter writer = null; ...

527

Lucene知识小总结5:强制删除索引

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33979203的博客 212

Lucene3.5 之 索引删除和更新

package com.ethan.index; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucen

ETHAN IN IT 3751

4、学习Lucene3.5之索引删除、更新

(1)删除索引 /** * 删除索引 */ public void deleteIndex(){ IndexWriter indexWriter = createIndexWriter(); /** * deleteDocuments()参数解析: * 第一种:Term term 删除特定的索引(

panchang199266的博客 339

elasticsearch索引red恢复

elasticsearch的red索引恢复

weixin_51544368的博客 638

5、学习lucene之索引操作所用类简单总结

在前几篇中,写了索引的删除、更新、优化等操作,基本就用了IndexWriter和IndexReader两个类。至于什么操作改用什么类,我有点晕,简单总结下。         索引删除:IndexWriter、IndexReader,建议使用IndexWriter,不过最好具体情况具体分析         索引恢复:IndexReader         索引强制删除:IndexWri

代码空间,程序家园 712

彻底解决Halo项目中的Lucene索引损坏问题:从异常分析到数据恢复全指南

你是否遇到过Halo站点搜索功能突然失效,后台日志频繁出现`IndexNotFoundException`或`IOException`?作为强大易用的开源建站工具,Halo项目采用Lucene(全文搜索引擎)实现内容检索,但索引文件损坏可能导致搜索服务瘫痪。本文将深入分析索引损坏的根本原因,提供完整的诊断流程和四种解决方案,帮助你在5分钟内恢复搜索功能。 ## 问题定位:识别Lucene索引损坏...

gitblog_01339的博客 408

lucene(索引的建立)

lucene的使用 索引过程的核心类:IndexWriter,Directory,Analyzer,Document,Field 准备的jar包:lucene-core-3.5.0.jar 索引的过程分析图 1、索引建立的简单步骤 1.1创建Dire

有一种信仰叫海阔天空 492

【Lucene学习笔记】索引的增删改查与查看工具

一、基本增删改查 二、索引查看工具Luke 三、关于Lucene4.10.2中的FieldType 而在最新的4.10.2版本中是由以下这些参数来与之对应的: TextField.TYPE_STORED 被分词索引且存储 TextField.TYPE_STORED 被分词索引但不存储

追梦赤子心 1807
上一篇: 1、学习lucene之建立索引
下一篇: 3、学习lucene之索引的更新和优化
鲲鹏_斯坦森
博客等级 码龄16年 3粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值