(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');
// 因為傳遞了 $commitWithin,因此不需要呼叫 commit(),所以 Solr 伺服器將在 10 秒內自動提交
$updateResponse = $client->addDocument($doc, false, 10000);
print_r($updateResponse->getResponse());
?>
上述範例會輸出類似以下內容
SolrObject Object ( [responseHeader] => SolrObject Object ( [status] => 0 [QTime] => 1 ) )