(PECL solr >= 0.9.2)
SolrClient::addDocument — 向索引添加文档
$doc
, bool $overwrite
= true
, int $commitWithin
= 0): SolrUpdateResponse此方法将文档添加到索引中。
doc
SolrInputDocument 实例。
overwrite
是否覆盖现有文档。如果为false
,则会出现重复项(具有相同ID的多个文档)。
PECL Solr < 2.0 使用 `$allowDups` 代替 `$overwrite`,它们的功能相同,但布尔标志正好相反。
`$allowDups = false` 等同于 `$overwrite = true`
commitWithin
自动提交此文档的毫秒数。从Solr 1.4开始可用。默认值(0)表示禁用。
指定此值时,它将提交时间的控制权留给Solr本身,将提交次数优化到最小,同时仍然满足更新延迟要求,Solr将在缓冲区中最旧的添加项到期时自动执行提交。
返回一个SolrUpdateResponse 对象,或在失败时抛出异常。
示例 #1 SolrClient::addDocument() 示例
<?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');
$updateResponse = $client->addDocument($doc);
// 如果你没有使用 $commitWithin,则必须提交更改才能写入
$client->commit();
print_r($updateResponse->getResponse());
?>
以上示例的输出将类似于
SolrObject Object ( [responseHeader] => SolrObject Object ( [status] => 0 [QTime] => 1 ) )
示例 #2 SolrClient::addDocument() 示例 2
<?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');
// 不需要调用 commit(),因为传递了 $commitWithin,所以Solr服务器将在10秒内自动提交
$updateResponse = $client->addDocument($doc, false, 10000);
print_r($updateResponse->getResponse());
?>
以上示例的输出将类似于
SolrObject Object ( [responseHeader] => SolrObject Object ( [status] => 0 [QTime] => 1 ) )