如何在solr 4(w / solarium)中使用查询和过滤器删除

时间:2013-06-03 09:01:28

标签: solr solarium

我正在使用Sorrium和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中的项目?

2 个答案:

答案 0 :(得分:3)

尝试将其添加到单个查询中<delete><query>type:comment AND writer_id:123</query></delete>

答案 1 :(得分:0)

通过使用以下命令在requestDispatchers下的requestParsers配置中将enableStreamBody设置为true,来更新solrconfig.xml文件以允许通过Solr Query删除文档

<requestParsers enableRemoteStreaming="true"
                    **enableStreamBody="true"**
                    multipartUploadLimitInKB="2048000"
                    formdataUploadLimitInKB="2048"
                    addHttpRequestToContext="false"/>