0
我已經提交了類似的問題,打開的文檔,但我已經分解的問題最簡單的形式,所以我要再次後它:SolrJ addFile保持
的問題是,SolrJ似乎保持文件句柄打開,如果我多次添加同一個文件。
我用下面的方法來提交一個文件到Solr:
public boolean addDocument(File doc) throws IOException, SolrServerException {
ContentStreamUpdateRequest csur = new ContentStreamUpdateRequest("/update/extract");
csur.addFile(doc);
csur.setParam("literal.id", Utils.getAbsolutePath(doc));
csur.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
NamedList<Object> result = this.solr.request(csur);
return result != null;
}
而且這個方法來刪除文件:
public void removeDocument(File doc) throws IOException,
SolrServerException {
this.solr.deleteById(Utils.getAbsolutePath(doc));
this.solr.commit();
}
,但似乎留下一些文件句柄揮之不去:
以下代碼片段演示了此問題:
File doc = new File("../../testpdf/bbb.pdf");
solr.addDocument(doc);
//solr.removeDocument(doc); // Without these 2 lines, all handles
//solr.addDocument(doc); // are released correctly
如果我兩次添加相同的文檔,SolrJ以某種方式保持句柄處於活動狀態,並且添加的文檔不能被其他進程修改。
我已經打過電話使用csur.addContentStream()
而不是在addDocument
csur.addFile()
,然後關閉添加流的底層流和Reader,沒有效果。
THX的任何建議提前
你確定它是Solr而不是Jnotify?看看誰在打開文件。這將是一個好開始 – maximdim 2011-02-12 20:30:05