SolrClient::addDocuments
(PECL solr >= 0.9.2)
SolrClient::addDocuments — Добавляет коллекцию экземпляров SolrInputDocument в индекс
Описание
$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() - Завершает все добавления/удаления, сделанные в индексе