SolrClient::addDocument

(PECL solr >= 0.9.2)

SolrClient::addDocumentДобавляет документ в индекс

Описание

public SolrClient::addDocument ( SolrInputDocument $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($docfalse10000);

print_r($updateResponse->getResponse());

?>

Результатом выполнения данного примера будет что-то подобное:


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

)

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

  • SolrClient::addDocuments() - Добавляет коллекцию экземпляров SolrInputDocument в индекс
  • SolrClient::commit() - Завершает все добавления/удаления, сделанные в индексе