1.修改索引
更新索引是先删除再添加,建议对更新需求采用此方法,并且要保证对已存在的索引执行更新,可以先查询出来,确定更新记录存在执行更新操作。
如果更新索引的目标文档对象不存在,则执行添加。
/** * 修改索引库 */ @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(); }
2.删除索引
/** * 删除索引库 */ @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(); }