3

每次我在 Apache Solr 中运行删除查询

i.e http://localhost:8983/solr/update?stream.body=<delete><query>id:APP 5.6.2*</query></delete>&commit=true

  <response> <lst name="responseHeader"><int name="status">0</int><int name="QTime">61</int></lst></response>

我得到了上述响应,当我查询我的索引以查看具有该 id 的文档是否已被删除时,它仍然能够查询我删除的文档。

我想知道知道文档已从 solr 索引中删除的最可靠方法是什么?多久能看到是否被删除?

我不相信 Solr Reponse 是知道删除查询完成了它应该做的事情的最可靠方法。

4

2 回答 2

3

想出了Qn的答案,我发布了“id:APP 5.6.2 *”

Solr 不会解释空格,因此您需要将它们转义,因此当我执行 id:APP\ 5.6.2* 时,它起作用了。

此外,您获得的 Response xml 并没有实际表明查询是否成功。

这只是意味着已收到 HTTP 请求,作为响应,您将获得我在 qn.xml 中发布的 xml。

发生的事情是当我给 id:APP 5.6.2* => 这被解释为 id:APP 并且它没有找到一个 id 为 APP 的文档,所以你想要删除的文档没有被删除。

所以查询应该是

http://localhost:8983/solr/update?stream.body=<delete><query>id:APP\ 5.6.2*</query></delete>&commit=true
于 2013-10-16T22:56:40.243 回答
1

您需要在 Url 中上移删除查询参数。我怀疑它在查询参数之后丢失了。尝试以下操作:

 http://localhost:8983/solr/update?commit=true&stream.body=<delete><query>id:APP 5.6.2*</query></delete>
于 2013-10-09T01:38:44.337 回答