9

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

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

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

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

谢谢!

4

4 回答 4

17

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

server.deleteById("20");
server.commit();
于 2010-05-02T14:33:23.053 回答
1

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

  UpdateRequest req = new UpdateRequest();
  req.setAction( UpdateRequest.ACTION.COMMIT, false, false );
  req.add( docs );
  UpdateResponse rsp = req.process( server );
于 2011-01-28T09:56:10.450 回答
0

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

server.deleteByQuery("id:20");
server.commit();
于 2016-08-18T08:39:18.387 回答
-1

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

例如 curl http://localhost:8983/solr/update --data ' : ' -H 'Content-type:text/xml; 字符集=utf-8'

于 2015-03-23T17:51:31.620 回答