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);
?>
SolrClient::addDocuments
(PECL solr >= 0.9.2)
SolrClient::addDocuments — اضافه کردن مجموعه نمونههای SolrInputDocument به اندیس
Description
public void SolrClient::addDocuments
( array $docs
[, bool $allowDups = false
[, int $commitWithin = 0
]] )
اضافه کردن مجموعه اسناد به اندیس.
Parameters
- docs
-
آرایه شامل مجموعه نمونههای SolrInputDocument. این آرایه باید آرایه واقعی باشد.
- allowDups
-
اگر FALSE باشد کپیها بازنویسی میشوند.
- commitWithin
-
تعداد میلیثانیهای برای اضافه کردن اسناد به اندیس. تنها از زمان Solr 1.4 در دسترس است
Return Values
بازگرداندن شی SolrUpdateResponse در صورت موفقیت و ایجاد SolrClientException در صورت خطا.
Examples
Example #1 مثال 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);
print_r($updateResponse->getResponse());
?>
The above example will output something similar to:
SolrObject Object
(
[responseHeader] => SolrObject Object
(
[status] => 0
[QTime] => 2
)
)
bjorn at bjorn-erik dot biz ¶
2 years ago
