我使用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'

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top