(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 ) )