(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 ) )