2010-04-17 65 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();