Lucene 索引维护
2021-04-02 20:27
标签:释放 分词 变更 英文 public date 分析器 eal except 1.修改索引 更新索引是先删除再添加,建议对更新需求采用此方法,并且要保证对已存在的索引执行更新,可以先查询出来,确定更新记录存在执行更新操作。 2.删除索引 Lucene 索引维护 标签:释放 分词 变更 英文 public date 分析器 eal except 原文地址:https://www.cnblogs.com/roadlandscape/p/12547655.html
如果更新索引的目标文档对象不存在,则执行添加。/**
* 修改索引库
*/
@Test
public void testUpdateIndex() throws IOException {
// 创建分析器(分词器) StandardAnalyzer标准分词器,对英文分词效果好,对中文是单字分词
Analyzer analyzer = new StandardAnalyzer();
// 创建IndexWriterConfig配置信息类,指定切分词使用的分词器
IndexWriterConfig config = new IndexWriterConfig(analyzer);
// 创建Directory对象,声明索引库存储位置
Directory dir = FSDirectory.open(Paths.get("D:\\lucene"));
// 创建IndexWriter写入对象,指定写入的位置和使用的config初始化对象
IndexWriter indexWriter = new IndexWriter(dir, config);
// 需要变更的内容
Document document = new Document();
// 创建域对象,并且放入文档对象中
document.add(new StringField("id", "100000003140", TextField.Store.YES));
document.add(new TextField("name", "vivo", TextField.Store.YES));
// 执行更新,会把所有符合条件的Document先删除,再新增。
indexWriter.updateDocument(new Term("id", "100000003140"), document);
// 释放资源
indexWriter.close();
}
/**
* 删除索引库
*/
@Test
public void testDeleteIndex() throws IOException {
// 创建分析器(分词器) StandardAnalyzer标准分词器,对英文分词效果好,对中文是单字分词
Analyzer analyzer = new StandardAnalyzer();
// 创建IndexWriterConfig配置信息类,指定切分词使用的分词器
IndexWriterConfig config = new IndexWriterConfig(analyzer);
// 创建Directory对象,声明索引库存储位置
Directory dir = FSDirectory.open(Paths.get("D:\\lucene"));
// 创建IndexWriter写入对象,指定写入的位置和使用的config初始化对象
IndexWriter indexWriter = new IndexWriter(dir, config);
// 根据Term删除索引库
// indexWriter.deleteDocuments(new Term("id", "100000003140"));
// 删除全部索引(慎用)
indexWriter.deleteAll();
// 释放资源
indexWriter.close();
}