Solr,按多个ID批量删除

时间:2018-09-20 11:29:55

标签: php solr

工作流程:

  

远程源      ->导入到MySQL      ->选择MySQL中所有过时的记录      -> 使用所有过时的记录ID将请求发送到SOLR      -> 通过多个ID删除Solr >将新记录推送到Solr。

通过多个ID删除文档的正确查询语法是什么?

我正在尝试:

id:(1 OR 2 OR 3)...
id:(1 AND 2 AND 3)

在php中:

$query = sprintf('id:(%s)', implode(' AND ', $toDelete));

$solrUrl = sprintf('http://%s:%s/%s/%s', $this->solr['host'], $this->solr['port'], $this->solr['path'], $action);
        $docs = [
            'delete' => ['query' => $query]
        ];
        $http = new Client();
        $http->post($solrUrl, json_encode($docs),['type' => 'json', 'timeout' => 30]);

1 个答案:

答案 0 :(得分:3)

提示只是将删除请求重写为按查询删除,然后将所有要删除的ID提交为简单的OR查询。不用说,这已经足够快并且可以解决我们的问题。

总结一下;写一个按查询删除的语句为:

id:(123123 OR 13371337 OR 42424242 ..)