(PECL solr >= 0.9.2)
SolrClient::addDocuments — Adds a collection of SolrInputDocument instances to the index
Adds a collection of documents to the index.
An array containing the collection of SolrInputDocument instances. This array must be an actual variable.
If FALSE duplicates will be overwritten.
Number of milliseconds within which to commit the documents to the index. This was only available since Solr 1.4
Returns a SolrUpdateResponse object on success and throws a SolrClientException on failure.
Beispiel #1 SolrClient::addDocuments() example
<?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);
print_r($updateResponse->getResponse());
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
SolrObject Object ( [responseHeader] => SolrObject Object ( [status] => 0 [QTime] => 2 ) )
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);
?>