使用solrj作为客户端从Solr删除索引

时间:2010-04-17 05:46:07

标签: solrj solr4 solr5

我使用solrj作为客户端来索引solr服务器上的文档。

我在从solr服务器删除'id'索引时遇到问题。 我使用以下代码删除索引:

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

此后,当我再次搜索文档时,搜索结果也包含上述文档。不知道这段代码出了什么问题。 请帮我解决问题。

谢谢!

4 个答案:

答案 0 :(得分:17)

当您调用deleteById时,只需使用id,不使用查询语法:

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

答案 1 :(得分:1)

删除文档后,提交服务器并添加以下行。 在服务器提交行之后。

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

答案 2 :(得分:0)

使用方法 deleteByQuery()删除与查询匹配的文档:

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

答案 3 :(得分:-1)

因此,只有在仅使用一个属性形成密钥时,deleteById才会起作用。所以,我的情况是id是employeeId + deptId等多个属性的组合。但是,我的桌子上有employeeId& deptId作为单独的列以及在其上创建的索引。因此,当我想要删除记录时,我只有employeeId而不是deptId。我使用curl命令删除您可以指定列及其值的位置,它将删除整个记录。

E.g。 curl http://localhost:8983/solr/update --data'' - H'内容类型:text / xml;字符集= UTF-8'