2012-08-12 15:11:06.0|分类: lucene|浏览量: 1529
deleteDocuments(Term term)是根据term删除document,但是这里的删除并不是真正的删除。 而是存储在一个回收站中的,可以恢复删除的document public void delete() { IndexWriter writer = null; try { writer = new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_35,new StandardAnalyzer(Version.LUCENE_35))); //参数是一个选项,可以是一个Query,也可以是一个term,term是一个精确查找的值 //此时删除的文档并不会被完全删除,而是存储在一个回收站中的,可以恢复 writer.deleteDocuments(new Term("id","1")); writer.commit(); } catch (CorruptIndexException e) { e.printStackTrace(); } catch (LockObtainFailedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if(writer!=null) { writer.close(); } } catch (CorruptIndexException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
执行完这个操作,索引文件夹下就会多出一个名叫_0_1.del的文件,也就是删除的文件在这个文件中记录了。
假如你想要强制删除回收站的信息可以调用writer.forceMergeDeletes()这个方法,但是这个方法不推荐使用,比较消耗内存,lucene会自动根据容量的大小删除所删除的文件。
|