CakeFest 2024: The Official CakePHP Conference

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($doc, false, 10000);

print_r($updateResponse->getResponse());

?>

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

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

)

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

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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top