(PECL solr >= 2.3.0)
SolrInputDocument::addChildDocuments — Añade un array de documentos hijos
Añade un array de documentos hijos al documento de entrada actual.
docs
Un array de objetos SolrInputDocument.
No devuelve ningún valor.
Lanza una SolrIllegalArgumentException en caso de error.
Lanza una SolrException en caso de error interno.
Ejemplo #1 Ejemplo de SolrInputDocument::addChildDocuments()
<?php
include "bootstrap.php";
$options = array
(
'hostname' => SOLR_SERVER_HOSTNAME,
'login' => SOLR_SERVER_USERNAME,
'password' => SOLR_SERVER_PASSWORD,
'port' => SOLR_SERVER_PORT,
'path' => SOLR_SERVER_STORE_PATH,
);
$client = new SolrClient($options);
$product = new SolrInputDocument();
$product->addField('id', 'P-BLACK');
$product->addField('cat', 'tshirt');
$product->addField('cat', 'polo');
$product->addField('content_type', 'product');
$small = new SolrInputDocument();
$small->addField('id', 'TS-BLK-S');
$small->addField('content_type', 'sku');
$small->addField('size', 'S');
$small->addField('inventory', 100);
$medium = new SolrInputDocument();
$medium->addField('id', 'TS-BLK-M');
$medium->addField('content_type', 'sku');
$medium->addField('size', 'M');
$medium->addField('inventory', 200);
$large = new SolrInputDocument();
$large->addField('id', 'TS-BLK-L');
$large->addField('content_type', 'sku');
$large->addField('size', 'L');
$large->addField('inventory', 300);
// añade los documentos hijos
$skus = [$small, $medium, $large];
$product->addChildDocuments($skus);
// añade el bloque de documento producto al índice
$updateResponse = $client->addDocument(
$product,
true, // sobrescribe si el documento existe
10000 // valida el commit en 10 segundos
);
print_r($updateResponse->getResponse());
El resultado del ejemplo sería algo similar a:
SolrObject Object ( [responseHeader] => SolrObject Object ( [status] => 0 [QTime] => 5 ) )