(PECL solr >= 2.3.0)
SolrInputDocument::addChildDocument — Ajoute un document enfant pour l'indexation de bloc
Ajoute un document enfant pour l'indexation de bloc avec des documents imbriqués.
child
Un objet SolrInputDocument.
Aucune valeur n'est retournée.
Lance une SolrIllegalArgumentException en cas d'échec.
Lance une SolrException en cas d'échec interne.
Exemple #1 Exemple de SolrInputDocument::addChildDocument()
<?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);
// ajoute un document enfant
$product->addChildDocument($small);
$product->addChildDocument($medium);
$product->addChildDocument($large);
// ajoute le bloc de document produit à l'index
$updateResponse = $client->addDocument(
$product,
true, // surchage si le document existe
10000 // commit dans les 10 secondes
);
print_r($updateResponse->getResponse());
Résultat de l'exemple ci-dessus est similaire à :
SolrObject Object ( [responseHeader] => SolrObject Object ( [status] => 0 [QTime] => 5 ) )