Solr, массовое удаление по нескольким идентификаторам - PullRequest
0 голосов
/ 20 сентября 2018

Рабочий процесс:

удаленный источник -> импорт в mysql -> выбрать все устаревшие записи в mysql -> отправить запрос в SOLR со всеми устаревшими идентификаторами записей -> solr удалить по нескольким идентификаторам > отправить новые записи в Solr.

Что такое правильный синтаксис запроса для удаления документов по нескольким идентификаторам?

Я пытаюсь:

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 голосов
/ 20 сентября 2018

Подсказка состоит в том, чтобы просто переписать запрос на удаление как запрос на удаление, а затем отправить все идентификаторы для удаления в виде простого запроса ИЛИ.Излишне говорить, что это более чем достаточно быстро и решило нашу проблему.

Подводя итог;написать оператор для удаления по запросу как:

id: (123123 ИЛИ 13371337 ИЛИ 42424242 ..)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...