1

我将 Solarium 与 Solr 4 一起使用,我需要使用多个条件进行删除。文档显示如何使用查询删除

$client = new Solarium\Client($config);

$update = $client->createUpdate();

$update->addDeleteQuery('type:comment');
$update->addCommit();

$result = $client->update($update);

这工作正常。但如果我需要不同的标准,例如 writer_id:123,我不知道该怎么做。如果我添加另一个 addDeleteQuery 行,最终的原始查询如下所示:

<update>

  <delete>
    <query>type:comment</query>
  </delete>

  <delete>
    <query>writer_id:123</query>
  </delete>

  <commit/>

</update>

看来这将独立删除它们。我不确定这是否重要,但架构中的 defaultOperator 是 AND。从http://www.solarium-project.org/forums/topic/change-operator/看起来它还不容易被覆盖。我不确定如何在此处应用解决方案来删除,如果它甚至可以在这里工作。

如何使用多个条件删除 solr 中的项目?

4

2 回答 2

3

尝试将其合并到一个查询中<delete><query>type:comment AND writer_id:123</query></delete>

于 2013-06-03T09:10:28.860 回答
0

注意更新您的 solrconfig.xml 文件以允许通过 Solr Query 删除文档,方法是在 requestDispatchers 下的 requestParsers 配置中将 enableStreamBody 设置为 true,并使用以下内容

<requestParsers enableRemoteStreaming="true"
                    **enableStreamBody="true"**
                    multipartUploadLimitInKB="2048000"
                    formdataUploadLimitInKB="2048"
                    addHttpRequestToContext="false"/>
于 2018-09-25T09:03:24.357 回答