题
我使用solrj作为客户端Solr的服务器上索引的文档。
我有问题,同时通过“ID”从solr的服务器删除索引。 我使用以下代码来删除索引:
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 );
使用该方法的 deleteByQuery()以删除匹配该查询的文件:
server.deleteByQuery("id:20");
server.commit();
所以deleteById将只如果你正在使用只有一个属性形成的关键。所以,我不得不情况下ID就像雇员+ DEPTID多个属性的组合。但是,我的表有雇员和DEPTID作为单独的列以及与它创建的索引。所以,当我想删除一条记录我只是雇员,而不是DEPTID。我使用curl命令来删除,你可以指定列,它的价值,它会删除整个记录。
E.g。 卷曲 HTTP://本地主机:8983 / solr的/更新 --data“: '-H' 内容 - 类型:文本/ XML;字符集= UTF-8'
不隶属于 StackOverflow