SolrClient::addDocuments

(PECL solr >= 0.9.2)

SolrClient::addDocumentsAdiciona uma coleção de instâncias SolrInputDocument ao índice

Descrição

public SolrClient::addDocuments(array $docs, bool $overwrite = true, int $commitWithin = 0): void

Adiciona uma coleção de documentos ao índice.

Parâmetros

docs

Um array que contém a coleção de instâncias SolrInputDocument. Este array deve ser uma variável real.

overwrite

Informa se os documentos existentes devem ou não ser substituídos. Se false, haverá duplicatas (vários documentos com o mesmo ID).

Aviso

PECL Solr < 2.0 $allowDups foi usado em vez de $overwrite, que faz a mesma funcionalidade com a opção booleana exatamente oposta.

$allowDups = false é o mesmo que $overwrite = true

commitWithin

Número de milissegundos para confirmar automaticamente este documento. Disponível desde Solr 1.4. Padrão (0) significa desabilitado.

Quando este valor é especificado, ele deixa o controle de quando fazer a confirmação para o próprio Solr, otimizando o número de confirmações ao mínimo enquanto ainda atende aos requisitos de latência de atualização, e o Solr fará uma confirmação automaticamente quando a adição mais antiga no buffer estiver pendente.

Valor Retornado

Retorna um objeto SolrUpdateResponse ou lança uma exceção em caso de falha.

Erros/Exceções

Lança SolrClientException se o cliente falhar ou houver problema de conexão.

Lança SolrServerException se o servidor Solr falhar ao processar a solicitação.

Exemplos

Exemplo #1 Exemplo de 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);

// nenhuma alteração será gravada no disco, a menos que $commitWithin seja passado ou SolrClient::commit seja chamado

print_r($updateResponse->getResponse());

?>

O exemplo acima produzirá algo semelhante a:

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

)

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
1
bjorn at bjorn-erik dot biz
14 years ago
If you want to add a bunch of documents from a database, this would be the way to go, assuming you have fetched the records from the database and put them in an array called $recordset:

<?php
foreach ($recordset as $key=>$value){
$docs_array[$key] = new SolrInputDocument();
$docs_array[$key]->addField('id', $value['document_id']);
$docs_array[$key]->addField('name',$value['document_name']);
}
$client->addDocuments($docs_array);
?>
To Top