SolrClient::addDocument
(PECL solr >= 0.9.2)
SolrClient::addDocument — Добавляет документ в индекс
Описание
$doc
, bool $overwrite
= true
, int $commitWithin
= 0
) : SolrUpdateResponseМетод добавляет документ в индекс.
Список параметров
-
doc
-
Экземпляр 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::addDocument()
<?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');
$updateResponse = $client->addDocument($doc);
// вам нужно будет зафиксировать изменения, которые будут записаны, если вы не использовали $commitWithin
$client->commit();
print_r($updateResponse->getResponse());
?>
Результатом выполнения данного примера будет что-то подобное:
SolrObject Object ( [responseHeader] => SolrObject Object ( [status] => 0 [QTime] => 1 ) )
Пример #2 Пример использования SolrClient::addDocument() #2
<?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');
// Нет необходимости вызывать commit(), потому что передается $commitWithin, поэтому Solr Server будет автоматически фиксировать в течение 10 секунд
$updateResponse = $client->addDocument($doc, false, 10000);
print_r($updateResponse->getResponse());
?>
Результатом выполнения данного примера будет что-то подобное:
SolrObject Object ( [responseHeader] => SolrObject Object ( [status] => 0 [QTime] => 1 ) )
Смотрите также
- SolrClient::addDocuments() - Добавляет коллекцию экземпляров SolrInputDocument в индекс
- SolrClient::commit() - Завершает все добавления/удаления, сделанные в индексе