1.IndexWriter和IndexReader都有刪除索引的方法:deleteDocuments();
不建議使用IndexReader刪除索引:使用IndexReader進行刪除時,必須關閉所有已經打開的IndexWriter;當使用當前的IndexReader進行搜索時,即使在不關閉IndexReader的情況下,被刪除的Document也不會再出現在搜索結果中。
2.IndexWriter刪除
IndexWriter.DeleteDocuments(Query query)——根據Query條件來刪除單個或多個Document
IndexWriter.DeleteDocuments(Query[] queries)——根據Query條件來刪除單個或多個Document
IndexWriter.DeleteDocuments(Term term)——根據Term來刪除單個或多個Document
IndexWriter.DeleteDocuments(Term[] terms)——根據Term來刪除單個或多個Document
IndexWriter.DeleteAll()——刪除所有的Document
3.刪除索引並不是立即從磁盤刪除,而是放入類回收站中,可回滾操作,需立即刪除時:
writer.forceMergeDeletes();
注:不能被搜索到的是不能刪除的,例如IntField