注册
登录
// 添加文档域
private static void addDoc()throws Exception{
// 定义索引库需要存放的目录
Directory directory = FSDirectory.open(Paths.get("D://lucene02"));
// 创建IndexWriter对象 使用中文分析器
IndexWriter writer = new IndexWriter(directory,new IndexWriterConfig(new SmartChineseAnalyzer()));
// 创建文档对象 Document
Document document = new Document();
// 创建文档域对象 并将其保存到文档对象中
document.add(new StringField("fileName","测试文件名.txt", Field.Store.YES));
document.add(new TextField("filePath","D://测试文件名.txt", Field.Store.YES));
document.add(new StoredField("fileAuther","作者信息"));
document.add(new TextField("content","文件内容。。。。。。。。", Field.Store.NO));
// 将文档对象写入到索引库
writer.addDocument(document);
// 关闭索引库
writer.close();
}


删除文档分为全部删除和部分删除
全部删除 直接使用indexWriter对象的deleteAll方法即可
部分删除 需要指定删除条件
例如 删除文件内容包含xxx的文档
indexWriter.deleteDocuments(new Term("content","xxx"));
或是根据query查询的结果进行删除都可以
// 删除文档域 - 全部删除
private static void delDoc1()throws Exception{
// 定义索引库需要存放的目录
Directory directory = FSDirectory.open(Paths.get("D://lucene02"));
// 创建IndexWriter对象 使用中文分析器
IndexWriter writer = new IndexWriter(directory,new IndexWriterConfig(new SmartChineseAnalyzer()));
// 全部删除文档域
writer.deleteAll();
// 关闭资源
writer.close();
}
// 删除文档域 - 根据查询条件删除
private static void delDoc2()throws Exception{
// 定义索引库需要存放的目录
Directory directory = FSDirectory.open(Paths.get("D://lucene02"));
// 创建IndexWriter对象 使用中文分析器
IndexWriter writer = new IndexWriter(directory,new IndexWriterConfig(new SmartChineseAnalyzer()));
// 根据查询结果删除文档域
writer.deleteDocuments(new Term("content","内容"));
writer.close();
}

修改文档域 本质上是先删除后添加
// 修改文档域
private static void modifyDoc()throws Exception{
// 创建文档对象并添加域
Document document = new Document();
document.add(new TextField("content","更新之后的内容", Field.Store.YES));
document.add(new TextField("content2","更新之后的内容2", Field.Store.YES));
document.add(new TextField("content3","更新之后的内容3", Field.Store.YES));
// 定义索引库需要存放的目录
Directory directory = FSDirectory.open(Paths.get("D://lucene02"));
// 创建IndexWriter对象 使用中文分析器
IndexWriter writer = new IndexWriter(directory,new IndexWriterConfig(new SmartChineseAnalyzer()));
// 更新到索引库
writer.updateDocument(new Term("content","内容"),document);
writer.close();
}
