PHP Australia Conference 2015

SolrClient::addDocuments

(PECL solr >= 0.9.2)

SolrClient::addDocumentsAñade una colección de instancias de SolrInputDocument al índice

Descripción

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

Añade una colección de documentos al índice.

Parámetros

docs

Una array que contiene la colección de instancias de SolrInputDocument. Este array debe ser una variable real.

overwrite

Si sobrescribir el documento existente o no. Si es FALSE existirán duplicados (varios documento con el mismo ID).

Advertencia

En Solr < 2.0 de PECL se usó $allowDups en lugar de $overwrite, que tiene la misma funcionalidad con la bandera booleana opuesta.

$allowDups = false es lo mismo que $overwrite = true

commitWithin

Número de milisegundos dentro de los que autoconsignar este documento. Disponible desde Solr 1.4. El valor predeterminado (0) significa deshabilitado.

Cuando se especifica este valor, deja el control de cúando realizar la consignación al mismo Solr, optimizando el número de consignaciones a un mínimo mientras aún se cumple con los requisitos de latencia de actualizaciones, por lo que Solr realizará automáticamente una consignación cuando la agregación más antigua en el búfer venza.

Valores devueltos

Devuelve un objeto SolrUpdateResponse o lanza una excepción en caso de error.

Errores/Excepciones

Lanza una SolrClientException si el cliente falló o hubo un problema de conexión.

Lanza una SolrServerException si el Servidor de Solr falló al procesar la petición.

Ejemplos

Ejemplo #1 Ejemplo de SolrClient::addDocuments()

<?php

$opciones 
= array
(
    
'hostname' => SOLR_SERVER_HOSTNAME,
    
'login'    => SOLR_SERVER_USERNAME,
    
'password' => SOLR_SERVER_PASSWORD,
    
'port'     => SOLR_SERVER_PORT,
);

$cliente = new SolrClient($opciones);

$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);

$respuestaActualización $cliente->addDocuments($docs);

// no se escribirán los cambios en disco hasta que se proporcione $commitWithin o se llame a SolrClient::commit

print_r($respuestaActualización->getResponse());

?>

El resultado del ejemplo sería algo similar a:

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

)

Ver también

add a note add a note

User Contributed Notes 1 note

up
0
bjorn at bjorn-erik dot biz
4 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