Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene 4.6索引阅读器删除_Lucene - Fatal编程技术网

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

在最新版本的lucene 4.6中,
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完全不同。