我正在使用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中的项目?
答案 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"/>