2010-04-17 59 views
9

我正在使用solrj作爲索引solr服務器上的文檔的客戶端。使用solrj作爲客戶端從Solr刪除索引

我在從solr服務器刪除'id'索引時遇到問題。 我使用下面的代碼刪除索引:

server.deleteById("id:20"); 
server.commit(true,true); 

在此之後,當我再次搜索的文件,搜索結果包含上述文件還。不知道這段代碼出了什麼問題。 請幫我解決問題。

謝謝!

回答

16

當你調用deleteById,只使用id,無查詢語法:

server.deleteById("20"); 
server.commit(); 
+0

我用這個,但這不是我的情況 – 2015-10-28 06:03:26

+0

工作將這項工作即使文檔ID是整數? – 2016-08-13 17:03:33

1

你刪除文件後,提交服務器,並添加以下行。 服務器提交行後。

UpdateRequest req = new UpdateRequest(); 
    req.setAction(UpdateRequest.ACTION.COMMIT, false, false); 
    req.add(docs); 
    UpdateResponse rsp = req.process(server); 
-1

因此,只有在使用一個屬性形成密鑰時,deleteById才能正常工作。所以,我曾經遇到過id是多個屬性的組合,比如employeeId + deptId。但是,我的表有employeeId & deptId作爲單獨的列以及創建索引。所以當我想刪除一條記錄時,我只有employeeId而不是deptId。我使用curl命令來刪除可以指定列及其值的位置,並且它將刪除整個記錄。

E.g. curl http://localhost:8983/solr/update --data''-H'Content-type:text/xml;字符集= UTF-8'

0

使用方法deleteByQuery()刪除該查詢匹配的文件:

server.deleteByQuery("id:20"); 
server.commit();