Добавляет коллекцию экземпляров SolrInputDocument в индекс

# SolrClient::addDocuments

(PECL solr >= 0.9.2)

SolrClient::addDocuments — Добавляет коллекцию экземпляров SolrInputDocument в индекс

### Описание

public function SolrClient::addDocuments(array `$docs`, bool `$overwrite` = `true`, int `$commitWithin` = 0): void

Добавляет коллекцию документов в индекс.

### Список параметров

`docs`

  Массив, содержащий коллекцию экземпляров SolrInputDocument. Этот массив должен быть реальной переменной.

`overwrite`

  Стоит ли перезаписывать существующие документы или нет. Если указано значение `false`, будут разрешены дубликаты (несколько документов с одинаковым ID).

  Внимание

  В PECL Solr < 2.0 $allowDups использовался вместо $overwrite, который выполняет те же функции с полностью противоположным флагом bool.

  $allowDups = false тоже самое, что и $overwrite = true

`commitWithin`

  Количество миллисекунд для автоматической фиксации документа. Доступно, начиная с Solr 1.4. По умолчанию (0) означает отключено.

  Если значение указано, остаётся контроль над тем, когда делать фиксацию для самого Solr, оптимизируя количество коммитов до минимума, при этом соблюдая требования к задержке обновления, и Solr автоматически выполнит фиксацию, когда наступит самое старое добавление в буфер.

### Возвращаемые значения

Возвращает объект SolrUpdateResponse или выбрасывает исключение в случае возникновения ошибки.

### Ошибки

Выбрасывает SolrClientException, если клиент отказал или возникла проблема с подключением.

Выбрасывает SolrServerException, если сервер Solr не смог обработать запрос.

### Примеры

Пример #1 Пример использования SolrClient::addDocuments()

    <?php

    $options = array
    (
        'hostname' => SOLR_SERVER_HOSTNAME,
        'login'    => SOLR_SERVER_USERNAME,
        'password' => SOLR_SERVER_PASSWORD,
        'port'     => SOLR_SERVER_PORT,
    );

    $client = new SolrClient($options);

    $doc = new SolrInputDocument();

    $doc->addField('id', 334455);
    $doc->addField('cat', 'Software');
    $doc->addField('cat', 'Lucene');

    $doc2 = clone $doc;

    $doc2->deleteField('id');
    $doc2->addField('id', 334456);

    $docs = array($doc, $doc2);

    $updateResponse = $client->addDocuments($docs);

    // никакие изменения не будут записаны на диск, если не будет передан $commitWithin или не будет вызван SolrClient::commit

    print_r($updateResponse->getResponse());

    ?>

Вывод приведённого примера будет похож на:

    SolrObject Object
    (
        [responseHeader] => SolrObject Object
            (
                [status] => 0
                [QTime] => 2
            )

    )

### Смотрите также

- SolrClient::addDocument() - Добавляет документ в индекс
- SolrClient::commit() - Завершает каждое добавление и удаление, которое сделали в индексе

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open