Lucene 4.6索引阅读器删除
在最新版本的lucene 4.6中,Lucene 4.6索引阅读器删除,lucene,Lucene,在最新版本的lucene 4.6中,IndexReader.deleteDocuments()不再存在。有人告诉我应该改用IndexWriter。然而,API文件显示: void deleteDocuments(Query... queries) 删除与提供的任何查询匹配的文档 void deleteDocuments(Query query) 删除与提供的查询匹配的文档 void deleteDocuments(Term... terms) 删除包含任何条款的文档,以及 void del
IndexReader.deleteDocuments()
不再存在。有人告诉我应该改用IndexWriter
。然而,API文件显示:
void deleteDocuments(Query... queries)
删除与提供的任何查询匹配的文档
void deleteDocuments(Query query)
删除与提供的查询匹配的文档
void deleteDocuments(Term... terms)
删除包含任何条款的文档,以及
void deleteDocuments(Term term)
删除包含术语的文档
没有按文档ID删除文档的方法。这是因为Lucene文档ID在IndexWriter中是短暂的,并且可以随时更改(一旦合并完成)
但是,
IndexWriter
确实有一个tryDeleteDocument()
,它需要一个近乎实时的IndexReader
和一个int docID
。如果可能(自打开IndexReader
以来没有完成任何合并),删除将“起作用”,方法返回true
。如果该方法返回false
,则必须通过Term
或Query
进行删除,或者重新打开一个新的NRT读取器并重试删除操作。重写代码,以便使用自己的域密钥(数据库主键等)互联网上所有关于Lucene的教程都是3.0版或更低版本,这很烦人。API完全不同。