IndexWriter的初始化

2024-08-23 10:18
文章标签 初始化 indexwriter

本文主要是介绍IndexWriter的初始化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

package indexwriter;


import org.apache.lucene.store.Lock;


//IndexWriter的三个构造函数
//String类型的绝对路径
//public IndexWriter(String path, Analyzer a, boolean create);
//Field类型的经过打包的绝对路径
//public IndexWriter(Field path, Analyzer a, boolean create);
//Directory类型的是lucene内部的一种目录表达方式
//public IndexWriter(Directory d, Analyzer a, boolean create);




//Analyzer是一个Lucene的重要工具,负责对各种输入的数据源进行分析,包括过滤,分词等多中功能。


//第三个boolean的参数是由第一个参数所指定的路径处,删除源目录内的内容在重新建立索引。
//如果已经创建了,就在后面继续添加




//私有构造函数
public class Indexwriter {
private IndexWriter(Directory d, Analyzer a, final boolean create, boolean closeDir) throws IOException{

this.cloneDir = closeDir;

//将索引的存放目录存入IndexWriter
directory = d;

//将Analyzer存入IndexWriter
analyzer = a;

//为索引的存放目录构造一个Writer.lock, 这是为了防止有两个进程同时修改目录
Lock WriterLock = directory.makeLock(IndexWriter.WRITER_LOCK_NAME);
if(!writerLock.obtain(writeLockTimeout)) 
throws new IOException("Index locked for writer: " + writerLock);

//把writer.lock存放IndexWriter
this.writeLock = writeLock;

//对目录进行同步
synchronized (directory)
{

//告诉主目录,这个写正确的IndexWriter需要对其进行操作
new Lock.with(directory.makeLock(IndexWriter.COMMIT_LOCK_NAME), commitLockTimeOut){
public Object doBody() throws IOException
{
//如果是删除源文件,则向目录写入索引的基础信息
if(create)
segmentInfos.write(directory);
//否则从原先的文件中读取出索引的当前基础信息
else
segmentInfos.read(directory);
return null;
}
}.run();
}

}
}

这篇关于IndexWriter的初始化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099099

相关文章

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

c++的初始化列表与const成员

初始化列表与const成员 const成员 使用const修饰的类、结构、联合的成员变量,在类对象创建完成前一定要初始化。 不能在构造函数中初始化const成员,因为执行构造函数时,类对象已经创建完成,只有类对象创建完成才能调用成员函数,构造函数虽然特殊但也是成员函数。 在定义const成员时进行初始化,该语法只有在C11语法标准下才支持。 初始化列表 在构造函数小括号后面,主要用于给

@postconstruct初始化的操作

从Java EE 5规范开始,Servlet中增加了两个影响Servlet生命周期的注解(Annotion);@PostConstruct和@PreDestroy。这两个注解被用来修饰一个非静态的void()方法 。写法有如下两种方式: @PostConstruct Public void someMethod() {}

spring和tomcat初始化的类和注解

1.InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法。 spring为bean提供了两种初始化bean的方式,实现InitializingBean接口,实现afterPropertiesSet方法,或者在配置文件中同过init-method指定,两种方式可以同时使用 实

LabVIEW环境中等待FPGA模块初始化完成

这个程序使用的是LabVIEW环境中的FPGA模块和I/O模块初始化功能,主要实现等待FAM(Field-Programmable Gate Array Module,FPGA模块)的初始化完成,并处理初始化过程中的错误。让我们逐步分析各部分的功能: 1. Wait for FAM Initialization框架 此程序框架用于等待I/O模块成功初始化。如果在5秒钟内模块没有完成配

dp(背包问题) 恰好、至少、至多初始化

状态表示的初始化(一般情况) f[i][j] i:前i件物品 体积至少为j 枚举体积时可以是负数(体积为负数时等价于体积为0) max f[i][j] = {-0x3f} f[i][0] = 0min f[i][j] = { 0x3f} f[i][0] = 0cnt f[0][0] = 1 体积至多为j 枚举体积时不能是负数 max f[i][j] = 0min f[i][j]

Windows11上使用WSL2,提示:系统尚未使用systemd作为初始化系统(PID 1)启动

前言 略 报错信息 System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down 解决方法 使用如下命令 # windows终端,执行如下命令wsl --update# 登录ubuntu系统,执行如下命令s

WapApp初始化样式表

@charset "utf-8";/* 样式初始化--------------------------------------------------*/body {margin: 0;padding: 0;background-color: #f6f6f6;font: normal 67.5% Helvetica, Arial, sans-serif;min-width: 240px;}*