我正在使用solrj作为索引solr服务器上的文档的客户端。使用solrj作为客户端从Solr删除索引
我在从solr服务器删除'id'索引时遇到问题。 我使用下面的代码删除索引:
server.deleteById("id:20");
server.commit(true,true);
在此之后,当我再次搜索的文件,搜索结果包含上述文件还。不知道这段代码出了什么问题。 请帮我解决问题。
谢谢!
我正在使用solrj作为索引solr服务器上的文档的客户端。使用solrj作为客户端从Solr删除索引
我在从solr服务器删除'id'索引时遇到问题。 我使用下面的代码删除索引:
server.deleteById("id:20");
server.commit(true,true);
在此之后,当我再次搜索的文件,搜索结果包含上述文件还。不知道这段代码出了什么问题。 请帮我解决问题。
谢谢!
当你调用deleteById,只使用id,无查询语法:
server.deleteById("20");
server.commit();
你删除文件后,提交服务器,并添加以下行。 服务器提交行后。
UpdateRequest req = new UpdateRequest();
req.setAction(UpdateRequest.ACTION.COMMIT, false, false);
req.add(docs);
UpdateResponse rsp = req.process(server);
因此,只有在使用一个属性形成密钥时,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'
使用方法deleteByQuery()删除该查询匹配的文件:
server.deleteByQuery("id:20");
server.commit();
我用这个,但这不是我的情况 – 2015-10-28 06:03:26
工作将这项工作即使文档ID是整数? – 2016-08-13 17:03:33